UVA918 ASCII Mandelbrot
题目描述
曼德勃罗集,以博尼特·曼德勃罗的名字命名,是一个分形。
曼德勃罗集是一堆复数构成的集合,复数就是形如 $a+b\sqrt{-1}$ 的数字,我们记 $i=\sqrt{-1}$,这样我们就可以将上面的数记作 $a+bi$,例如 $2.5+3i$。而由于 $i^2=-1$,那么我们就可以这样搞:$(3i)^2=9\times -1=-9$。
然而不幸的是我们没法把 $i$ 放到实数轴上,因此我们只能把它放在虚数轴上,于是我们就有了一个复平面,而序数轴当然与实数轴垂直,如下:

这里的平面上标出了一个数 $1+2i$。
曼德勃罗集是复数构成的集合,而我们把它画在复平面上,但是我们需要判定某个复数是否在集合之中,这里我们采用方程 $f(z)=z^2+C$,而后 $z\leftarrow f(z)$,而其中常速 $C$是一个常数,即为我们需要判定的数字。$z$ 一开始是 $0+0i$,而每次我们首先根据 $C$ 计算出 $f(z)$,而后把 $f(z)$ 赋值给 $z$。
我们当然不会关注 $z$ 是怎么变得,我们要关注它的模长 $||z||=\sqrt{(\Re z)^2+(\Im z)^2}$,只要这个 $||z||$ 在某个时候大于 $2$,那么它就会不断地膨胀,并且不会变小,这样他就不属于曼德勃罗集。
只要我们测试尽可能多的复数,而后就能得到这样一张图片:

我们当然可以给曼德勃罗集合外的元素上色,颜色即为其脱出边界值 $2$ 所用的步数。
假若我们想要找到曼德勃罗集合的漂亮之处,我们只需要把图片放大就好了。
你的任务:给定值域,用 ASCII 画一下上面说的东西。
输入格式
$T$ 组数据,每组数据包含下面的一些东西:
+ 字符串 $C$,头尾带双引号,其中内容(不包含双引号,引号或者)长度为 $12$。
+ 两个实数 $\min_\Im$ 和 $\max_\Im$,代表虚数值域 $[\min_\Im,\max_\Im]$。
+ 两个实数 $\min_\Re$ 和 $\max_\Re$,代表实数值域 $[\min_\Re,\max_\Re]$。
+ 两个实数 $\mathrm{prec}_\Im$ 和 $\mathrm{prec}_\Re$,代表实数和虚数作为一个字符时的最小的精度。
输入它们的顺序是:$C,\min_\Im,\max_\Im,\mathrm{prec}_\Im,\min_\Re,\max_\Re,\mathrm{prec}_\Re$。
输出格式
你需要输出这样的一副图案:
```plaintext
[MINI+0*PRECI,MINR+0*PRECR] [MINI+0*PRECI,MINR+1*PRECR] [MINI+0*PRECI,MINR+2*PRECR] (...) [MINI+0*PRECI,B]
[MINI+1*PRECI,MINR+0*PRECR] [MINI+1*PRECI,MINR+1*PRECR] [MINI+1*PRECI,MINR+2*PRECR] (...) [MINI+1*PRECI,B]
[MINI+2*PRECI,MINR+0*PRECR] [MINI+2*PRECI,MINR+1*PRECR] [MINI+2*PRECI,MINR+2*PRECR] (...) [MINI+2*PRECI,B]
(...) (...) (...) (...) (...)
[ A,MINR+0*PRECR] [ A,MINR+1*PRECR] [ A,MINR+2*PRECR] (...) [ A,B]
```
这里每个括号代表一个复数,而 $A,B$ 是最大的小于等于 $\max_\Im,\max_\Re$ 的数字。
只要某个复数的扩展超过了 $2$,那么则用 $C$ 里的第 $i$ 个字符予以标注,其中 $i$ 是迭代的遍数并且在第 $i$ 遍超过 $2$.假若没有超过 $2$,就放一个空格。
输出如上的图像,并且以一个空行分割。