这种挑战的目的是为了描绘图形平面上,其中,每个步骤的方向散步是由素性确定及其二进制展开的奇偶性。特别,
- 初始方向是固定的,例如北。
- 所有步骤的长度相同。
- 步骤的方向可以是北,西,南或东,并确定如下:
- 如果不是素数,则方向不会改变。
- 如果是素数,的二进制展开拥有者的偶数,右转。
- 如果是素数,的二进制展开具有奇数个1,左转。
作为一个可行的示例,假设初始方向是北。第一步是:
- 不是素数。因此,我们朝当前方向(北)移动了一步。
- 是质数,并且其二进制扩展
10
数具有奇数个。所以我们左转,现在正对着西方。我们朝这个方向迈出了一步。 - 是质数,它的二进制扩展
11
数,具有偶数个。因此,我们向右转,现在正对着北方。我们朝这个方向迈出了一步。 - 不是素数。因此,我们朝当前方向(北)移动了一步。
挑战
输入:正整数。
输出:如上定义的步走的图。
附加规则
- 的初始方向可以自由地选择(不一定北),但应该是全部相同。
- 的转动规则可以是与上述相反,即,右转奇校验并放置甚至; 但是对于所有它必须相同。
- 输出必须是步行的图形描述。例如:
- 可以用线段绘制步行。
- 可以使用标记(例如点)来显示访问点;有或没有连接线段。
- 可以提供两种颜色的光栅图像,一种颜色对应于已访问的点,另一种颜色则用于未访问的点。
- 水平轴和垂直轴的比例不必相同。轴标签和类似元素也是可选的。只要可以清楚地看到步行,该情节就是有效的。
- 请注意,某些点被多次访问。情节对此并不敏感。例如,如果在曲线图中显示了线段,则无论其经过多少次,每个单位段都将显示为相同。
- 该代码应适用于任何
N
给定的无限资源。如果在实践中N
由于时间,内存或数据类型的限制而导致故障很大,则可以接受。 - 输入和输出像往常一样灵活。特别地,可以使用用于输出图像的任何标准装置。
- 以字节为单位的最短代码获胜。
测试用例
下图以北为初始方向。甚至平价向右转;并用线段描绘了步行路线。
N = 7
:
N = 3000
:
N = 20000
:
N = 159000
:
N = 1200000
:
N = 11000000
:
[graphical-output]
吗?有什么特别的理由不允许ASCII输出,例如我现在删除的Charcoal答案?