![]() |
1
7
[编辑:更新]如果语言无关紧要:去: http://rosettacode.org/wiki/Spiral_matrix 在PHP中:干得好:
|
![]() |
2
3
在蟒蛇中:
|
![]() |
3
3
看来蛇的游戏可能会奏效。跟踪一个方向向量,每次你碰到一个边或一个人口稠密的广场,都向右转90度。尾巴一直无限地伸展:) 编辑:snakey v0.1 in c。也适用于非方形网格;)
|
![]() |
4
3
好吧,我只是为了好玩才发布这个答案。 其他的解决方案使用变量迭代地积累信息。我想尝试一个函数式的解决方案,在这个解决方案中,任何表单元格(或者任何数字的表单元格)的编号都可以在不迭代任何其他单元格的情况下知道。 这里是JavaScript。我知道,它不是纯粹的函数式编程,也不是非常优雅,但是每个表单元的数字计算都是在不参考先前迭代的情况下完成的。所以它是多核友好型的。 现在我们只需要有人在哈斯克尔做这件事。;-) 顺便说一句,这是在评论之前写的,1应该在一个不一定是西北角的特定位置结束(目前还未指明)。 因为有人提到了乌兰姆螺旋线,我就为了踢,添加了一些代码,在素数周围加上一个红色的边界(即使螺旋线是由内向外的)。有趣的是,似乎存在着质数的对角条纹,尽管我不知道它是否与随机奇数的条纹有显著不同。 代码:
要练习的HTML页面:
|
![]() |
5
2
用Java语言
|
![]() |
6
1
在PHP中,但使用递归。可以通过指定边的长度来设置要填充的方形框的大小。
其工作方式是函数最初在指定的数组位置填充值。然后它试图继续朝它移动的方向移动。如果不行,顺时针旋转90度。如果没有向左移动,则停止。这是用
这可以很容易地适应矩形网格(只需指定2个常量而不是1个用于边长)。 Live Example with an 8x8 你的 4x4 代码:
|