gpt4 book ai didi

list - NetLogo:在列表中添加和删除项目

转载 作者:行者123 更新时间:2023-12-02 07:21:59 26 4
gpt4 key购买 nike

每当代理为他们正在执行的某些操作获取新值时,我希望他们将其添加到列表的末尾。如果列表中有十个或更多项目,我希望他们删除列表中的第一个项目,以便列表按顺序包含代理看到的十个最新值。我该怎么做? (编辑:忘了问一个实际的问题。)

我希望能够对列表中的每个项目应用数学运算,所以我不想要一个类似 cons 单元格的列表列表,除非有一些简单的方法可以对这样一个列表中的每个项目应用数学运算我不知道的。

最佳答案

让我们构建一个简单的示例,其中每只海龟在每个刻度以随机角度轻微右转,并将这些角度的历史记录存储在列表中:

turtles-own [ history ]

to setup
clear-all
create-turtles 3 [
set history [] ; initialize history to an empty list
]
reset-ticks
end

to go
ask turtles [
let angle random 5
right angle
; add the angle of the most recent turn
; at the end of the list
set history lput angle history
if length history > 10 [
; remove the first item from the list
set history but-first history
]
forward 0.1
]
tick
end

I don't want a list of cons cell-like lists, unless there's some easy way to apply mathematical operations to each item in such a list that I don't know about.

我不知道你所说的“类似单元格列表的列表”是什么意思,但是如果你想做数学,像我们在这里构建的这样一个简单的列表是迄今为止你可以使用的最好的东西。

要对每个项目应用操作,请使用 map .然后你可以使用类似 sum 的函数或 mean对整个列表进行操作。例如:

to do-math
ask turtles [
let doubled-history map [ a -> a * 2 ] history
show history
show doubled-history
show mean doubled-history
]
end

(请注意,这使用 NetLogo 6.0.1 语法。)

让我们看一个演示:

observer> setup repeat 5 [ go ] do-math
(turtle 2): [4 3 2 1 2]
(turtle 2): [8 6 4 2 4]
(turtle 2): 4.8
(turtle 1): [4 0 1 1 4]
(turtle 1): [8 0 2 2 8]
(turtle 1): 4
(turtle 0): [2 0 4 1 0]
(turtle 0): [4 0 8 2 0]
(turtle 0): 2.8

关于list - NetLogo:在列表中添加和删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43106689/

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