# The Fractalist
给定一些复数
-1.2499999999999993-0.03999999999999925i | |
-0.4199999999999986+0.6000000000000011i | |
-0.24999999999999845-0.6399999999999997i | |
-1.2099999999999993-0.16999999999999926i | |
0.08000000000000164-0.6299999999999997i | |
0.3600000000000018-0.3199999999999994i | |
0.3300000000000018+0.520000000000001i | |
-0.16999999999999837+0.6500000000000011i | |
-0.23999999999999844+0.7500000000000012i | |
-0.6999999999999988-0.26999999999999935i | |
-0.5699999999999987+0.5700000000000011i | |
-0.5499999999999987-0.6499999999999997i | |
-0.5699999999999987-0.49999999999999956i | |
-0.7099999999999989+0.29000000000000087i | |
-0.36999999999999855-0.6399999999999997i | |
-0.7499999999999989+0.030000000000000755i | |
-1.2599999999999993-0.08999999999999925i | |
-1.0099999999999991+0.28000000000000086i | |
-1.3399999999999994-0.059999999999999255i | |
-0.5699999999999987+0.500000000000001i | |
-0.7499999999999989+0.04000000000000076i | |
-0.47999999999999865-0.6299999999999997i | |
-1.0599999999999992-0.25999999999999934i | |
-0.7799999999999989+0.13000000000000073i | |
-0.21999999999999842-0.7399999999999998i | |
-0.7799999999999989+0.15000000000000074i | |
-0.47999999999999865-0.6199999999999997i | |
-0.1899999999999984+0.6700000000000012i | |
-0.4199999999999986-0.5999999999999996i | |
0.29000000000000176+0.47000000000000103i | |
-0.829999999999999-0.18999999999999928i | |
-0.7899999999999989+0.15000000000000074i |
题面:Math and science are powerful tools, but imagination might be the key to success.
# Writeup
根据题目名字,猜测是分型,与 Mandbrot Sequence 有关。
Mandbrot 是在一个复数平面上的区域.
给定一个点 , 怎么确定它在不在这个集合里呢(图中黑色部分)
就是用这个公式
把 , 带入这个式子计算 一直计算,如果这个数收敛,那么它就在这个集合里。
可以证明,如果 那么它一定不在这个集合里面,并且这个最小的 就是这个 的逃逸时间,escape-time
我们计算出上面这些复数点的逃逸时间 . 可以得到一个逃逸时间序列,把它作为 ascii 输出就可以了
import matplotlib.pyplot as plt | |
data = [ | |
complex(-1.2499999999999993,-0.03999999999999925), | |
complex(-0.4199999999999986,0.6000000000000011), | |
complex(-0.24999999999999845,-0.6399999999999997), | |
complex(-1.2099999999999993,-0.16999999999999926), | |
complex(0.08000000000000164,-0.6299999999999997), | |
complex(0.3600000000000018,-0.3199999999999994), | |
complex(0.3300000000000018,0.520000000000001), | |
complex(-0.16999999999999837,0.6500000000000011), | |
complex(-0.23999999999999844,0.7500000000000012), | |
complex(-0.6999999999999988,-0.26999999999999935), | |
complex(-0.5699999999999987,0.5700000000000011), | |
complex(-0.5499999999999987,-0.6499999999999997), | |
complex(-0.5699999999999987,-0.49999999999999956), | |
complex(-0.7099999999999989,0.29000000000000087), | |
complex(-0.36999999999999855,-0.6399999999999997), | |
complex(-0.7499999999999989,0.030000000000000755), | |
complex(-1.2599999999999993,-0.08999999999999925), | |
complex(-1.0099999999999991,0.28000000000000086), | |
complex(-1.3399999999999994,-0.059999999999999255), | |
complex(-0.5699999999999987,0.500000000000001), | |
complex(-0.7499999999999989,0.04000000000000076), | |
complex(-0.47999999999999865,-0.6299999999999997), | |
complex(-1.0599999999999992,-0.25999999999999934), | |
complex(-0.7799999999999989,0.13000000000000073), | |
complex(-0.21999999999999842,-0.7399999999999998), | |
complex(-0.7799999999999989,0.15000000000000074), | |
complex(-0.47999999999999865,-0.6199999999999997), | |
complex(-0.1899999999999984,0.6700000000000012), | |
complex(-0.4199999999999986,-0.5999999999999996), | |
complex(0.29000000000000176,0.47000000000000103), | |
complex(-0.829999999999999,-0.18999999999999928), | |
complex(-0.7899999999999989,0.15000000000000074) | |
] | |
ans = [] | |
for c in data: | |
n = 0 | |
z = 0 | |
while abs(z) <= 2: | |
z = z*z + c | |
n += 1 | |
ans.append(n-1) | |
print(bytearray(ans)) |
于是得到 flag
DawgCTF{BeN01tWh0Co1N3dFr@CtaLs} |