在 NetLogo 的列表中引用列表
Referencing lists in list in NetLogo
所以,我有一个列表列表。有点像:
set plist [(list patch-at 0 0 100) (list patch-at 20 20 70) ...]
所以生成的列表是一对 "patch, number" 的列表。我需要做的是在那个 plist 上做一个 foreach,对于那个列表中的每个列表,我想减少数字,让在 "go" 函数中说。所以每次滴答,我都希望数字少1。
我想不出办法达到那个数字。 go,ask turtles[]:
有代码我有
foreach listp [
set item 1 ??? item 1 ??? - 1
if item 1 ??? <= 0 [remove ??? listp]
]
其中 ??? 是我不知道的列表名称(嵌套列表)。显然我想要做的是在 100 个滴答后从列表中删除补丁。
有没有一种方法可以引用这些列表,或者有一种方法可以在不指定列表名称的情况下以某种方式调用 "set item 1"?
提前致谢! :)
turtles-own [plist]
to setup ;;create an initialize some turtles
ask n-of 10 patches [
sprout 1 [
set plist (list (list patch-at 0 0 100) (list patch-at 20 20 70))
]
]
end
to go ;;update the `plist` of each turtles
ask turtles [
set plist map [list first ? (last ? - 1)] plist
set plist filter [last ? > 0] plist
]
end
所以,我有一个列表列表。有点像:
set plist [(list patch-at 0 0 100) (list patch-at 20 20 70) ...]
所以生成的列表是一对 "patch, number" 的列表。我需要做的是在那个 plist 上做一个 foreach,对于那个列表中的每个列表,我想减少数字,让在 "go" 函数中说。所以每次滴答,我都希望数字少1。
我想不出办法达到那个数字。 go,ask turtles[]:
有代码我有 foreach listp [
set item 1 ??? item 1 ??? - 1
if item 1 ??? <= 0 [remove ??? listp]
]
其中 ??? 是我不知道的列表名称(嵌套列表)。显然我想要做的是在 100 个滴答后从列表中删除补丁。
有没有一种方法可以引用这些列表,或者有一种方法可以在不指定列表名称的情况下以某种方式调用 "set item 1"?
提前致谢! :)
turtles-own [plist]
to setup ;;create an initialize some turtles
ask n-of 10 patches [
sprout 1 [
set plist (list (list patch-at 0 0 100) (list patch-at 20 20 70))
]
]
end
to go ;;update the `plist` of each turtles
ask turtles [
set plist map [list first ? (last ? - 1)] plist
set plist filter [last ? > 0] plist
]
end