您如何从海龟列表中找到海龟特定变量的总和?
我试图从海龟列表中加总一个变量,并将该数字与问龟的特定值进行比较,但我不确定语法是什么。
每只乌龟都有自己的特定清单,由其他乌龟组成,可以问[mylist]
,我想要将他们的var_x
加起来并将其与问龟进行比较&#39 ; s var_x
。
ask turtles [
set ListVarXSum ( sum (var_x) of each turtle on list [mylist] )
]
答案 0 :(得分:3)
做你想做的最直接的方法是:
set ListVarXSum sum map [ t -> [ var-x ] of t ] mylist
map
原语将海龟列表转换为由每个海龟的var-x
值填充的列表。然后,您可以将该列表与sum
相加。
话虽如此,Luke C说得对,在代理集中存储代理然后在列表中通常更方便(除非您需要它们按特定顺序或您重复代理)。
要将代理列表转换为代理集,您始终可以使用turtle-set
原语。使用它,你可以这样做:
set ListVarXSum sum [ var-x ] of turtle-set mylist
它读得更好,但由于每次将列表转换为代理集所需的时间,它运行得更慢。如果它是您需要经常进行的操作,那么预先存储代理设置可能会更好(可能通过使用turtle-set
转换您放入的任何内容{{1}代替一个代理集,或者使用一个给你一个代理集的原语,比如Luke的mylist
例子。)
答案 1 :(得分:2)
如果我了解你之后的情况,最好不要使用海龟列表,而是使用海龟的代理集来进行比较。看看这个简单的例子,看看它是否能满足你的需求:
turtles-own [
var_x
my_comparison_turtles
]
to setup
ca
crt 10 [
set var_x 3 + random 10
setxy random-xcor random-ycor
]
ask turtles [
set my_comparison_turtles n-of 3 other turtles
]
reset-ticks
end
to sum-compare
ask turtles [
let temp_sum sum [var_x] of my_comparison_turtles
print ( word "My var_x is " var_x ", and the sum of my comparison turtles' var_x is " temp_sum "." )
]
end