gpt4 book ai didi

Netlogo 嵌套循环

转载 作者:行者123 更新时间:2023-12-04 07:38:42 24 4
gpt4 key购买 nike

基本上,我的问题是嵌套循环如何在 netlogo 中工作。我试过在彼此内嵌套两个 while 循环,但内部循环似乎并没有正常运行(正确地是它们在其他语言中的工作方式)。如果我使用两个不同的循环,它会按预期工作。 netlogo 中的循环工作类似于汇编语言中的标签,因此它会在注意到标签时跳到第一个。

我问的原因是因为我一直在诉诸于彼此使用不同类型的循环,或者为内部循环创建一个过程,这损害了我的代码的可读性。这是一个示例,我正在读取制表符分隔的文件以将值分配给补丁:

file-open "map2.txt"
let i max-pycor
let j min-pxcor
while [i >= min-pycor] [
repeat 33 [ask patch j i [
ifelse file-read = 1
[set pcolor white]
[set pcolor black]
]
set j j + 1
]
set i i - 1
]
file-close-all

我想删除那个重复的 33 循环,并有一个 while 循环用于可变大小的世界。

最佳答案

起初,我不确定您所说的“在 netlogo 中执行循环与汇编语言中的标签工作类似,以便在注意到标签时跳到第一个”是什么意思,但我现在怀疑您指的是事实如果你嵌套两个 loop 在 NetLogo 中构建,最终使用 stop 将您从外部循环中解脱出来,这无疑不是您所期望的。

展示:

to test-loop
let i 0
loop [
set i i + 1
type (word "i" i " ")
let j 0
loop [
set j j + 1
type (word "j" j " ")
if j = 3 [ stop ]
]
if i = 3 [ stop ]
]
end

会在命令中心给你这个:
observer> test-loop
i1 j1 j2 j3

我明白为什么这可能是一个问题。 while in NetLogo ,但是,行为正如您所期望的那样:
to test-while
let i 0
while [ i <= 3 ] [
set i i + 1
type (word "i" i " ")
let j 0
while [ j <= 3 ] [
set j j + 1
type (word "j" j " ")
]
]
end

在指挥中心:
observer> test-while
i1 j1 j2 j3 j4 i2 j1 j2 j3 j4 i3 j1 j2 j3 j4 i4 j1 j2 j3 j4

...所以我不明白为什么你不能使用两个嵌套的 while循环。

关于Netlogo 嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20274193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com