如何实现像 Netlogo 中的 Ulam 螺旋那样的方形螺旋?
How does one achieve a square spiral like the the Ulam spiral in Netlogo?
我花了一上午的时间试图找到一个简单的函数 (x,y) -> n 来为补丁编号
我没有成功。大家有什么经验或者建议吗?
有趣的是你应该问我早上也做了同样的事情。有一个函数使用了 floor 函数,但我记得这是 netlogo
所以我让一只乌龟帮我做。
用这个程序
to spin
let k 1
set t t + 1
repeat 2
[
lt 90
repeat t [fd 1 ask patch-here [set n k set k k + 1]]
]
end
并且这段代码在启动时。
crt 1 [
set heading 0
repeat 41 [spin]
die
]
当然还有
patches-own [n]
按 n 顺序调用它们使用
foreach sort-on [n] patches ask ? [ "the stuff you want them to do" ]
这是我的看法:
patches-own [ n ]
to setup
clear-all
resize-world -4 4 -4 4 ; so it looks better, but use any size you like...
create-turtles 1 [
set heading 180
foreach n-values count patches [ ? + 1 ] [
set n ?
if [ n = 0 ] of patch-left-and-ahead 90 1 [ left 90 ]
fd 1
]
die
]
ask patches [ set plabel n ]
end
我花了一上午的时间试图找到一个简单的函数 (x,y) -> n 来为补丁编号
我没有成功。大家有什么经验或者建议吗?
有趣的是你应该问我早上也做了同样的事情。有一个函数使用了 floor 函数,但我记得这是 netlogo 所以我让一只乌龟帮我做。
用这个程序
to spin
let k 1
set t t + 1
repeat 2
[
lt 90
repeat t [fd 1 ask patch-here [set n k set k k + 1]]
]
end
并且这段代码在启动时。
crt 1 [
set heading 0
repeat 41 [spin]
die
]
当然还有
patches-own [n]
按 n 顺序调用它们使用
foreach sort-on [n] patches ask ? [ "the stuff you want them to do" ]
这是我的看法:
patches-own [ n ]
to setup
clear-all
resize-world -4 4 -4 4 ; so it looks better, but use any size you like...
create-turtles 1 [
set heading 180
foreach n-values count patches [ ? + 1 ] [
set n ?
if [ n = 0 ] of patch-left-and-ahead 90 1 [ left 90 ]
fd 1
]
die
]
ask patches [ set plabel n ]
end