import argparse def fractal(size: int, depth: int, g2: float, g3: float): xi = yi = -2 xf = yf = 2 code = "" for y in range(size): zy = y * (yf - yi) / (size - 1) + yi for x in range(size): zx = x * (xf - xi) / (size - 1) + xi z = zx + zy * 1j for i in range(depth): if abs(z) > 2: code += str(i) break z = (z**4 + 0.5 * g2 * z * z + 2 * g3 * z + 1 / 16 * g2**2) / ( 4 * z**3 - g2 * z - g3 ) return code def main(): parser = argparse.ArgumentParser() parser.add_argument("--size", "-s", type=int, default=128, required=False) parser.add_argument("--depth", "-d", type=int, default=8, required=False) parser.add_argument("-g2", type=float, default=0.0, required=False) parser.add_argument("-g3", type=float, default=1.0, required=False) args, _ = parser.parse_known_args() code = fractal(args.size, args.depth, args.g2, args.g3) print(code) if __name__ == "__main__": main()