在此挑战中,我们将绘制一个三角形的Ulam螺旋线(与通常的方形Ulam螺旋线相反)。这是螺旋形的草图。
众所周知,乌拉姆螺旋将所有自然数排列在一个向外的螺旋中,并且仅标记那些质数。因此,在上面的草图中,只会显示以黑色(质数)显示的数字。
挑战
接受数字N作为输入,并显示直至该数字的三角形Ulam螺旋。
- 输入可以是stdin或函数参数。
- 螺旋线应沿正方向(即逆时针)旋转,如上图所示。
- 上图的120度转弯中的任何一个都是有效的,并且转弯对于不同的输入可能是不同的。但是隐含三角形的最低边应为水平,因为唯一允许的转弯为120度(的倍数)。
- 理论上,代码应针对任何N运行(给定的时间和内存),直到使用默认数据类型进行的任何中间计算所允许的N。
double
足够; 不需要大整数类型。 - 允许所有内置功能。
- 我不会接受我自己的答案(不是我认为这将是最短的答案...)。
输出格式
选择以下任意一项。
显示带有质数的标记(点,圆,叉,任意)的图形,非质数不显示任何图形。两个轴的比例不必相同。也就是说,隐含三角形不必是等边的。轴,网格线和轴标签是可选的。仅需要质数上的标记。
N = 12 的示例输出如下(与上面的草图比较)。第二个图是一个更有趣的示例,对应于N = 10000。
- 使用任何众所周知的图像格式(例如png,tiff,bmp),用上述文件生成图像文件。
将螺旋显示为ASCII艺术,使用您选择的单个字符表示质数,使用空白表示非质数,并用空格分隔同一行中的数字位置。允许前导或尾随空格或换行符。例如,如果N = 12的情况下使用
o
字符o · · · o · o · · · o · o
当然,只有
o
素数标记才会实际显示。将·
在非质数如下所示,仅供参考。
获奖标准
实际的回报是亲眼看到那些惊人的模式 Code Golf,最短的代码获胜。