计算同一海龟列表中的出现次数
Count number of occurrences in a list from same turtle
我想知道如何在列表中找到项目的 'source'。我需要为此任务考虑的操作如下:
1) 在乌龟创建的列表中添加了一个项目;
2) 由于每只乌龟都有自己的列表,其中包含由不同乌龟创建的项目,我想设置一个计数器来说明这只乌龟选择乌龟 A 的项目的频率。
方法和代码:
这段代码在选定海龟的列表中添加了一个名为 'this_item' 的项目(局部变量):
ask one-of turtles [
set archive fput this_item archive
]
此其他代码将相同的项目添加到邻居列表中:
ask in-link-neighbors [
set archive fput this_item archive
]
我会设置一个局部变量,例如已选择,作为列表中的第一项。
let picked first archive
要查找项目的来源,我想使用 who
。但是,who
用于在提取项目后将其添加到自己的列表中的乌龟。
print (word "Source: " who " has this list " list " after added item " picked)
如果我认为一个变量 source
在乌龟创建新项目时通过使用我自己定义为项目的来源,这只会向我报告来源(学生)的品种,而不是相应的来源的乌龟(例如学生 2)。
这使得无法计算一个来源的项目被选择了多少次。
问题:
如何统计同一只乌龟的物品被选中的次数?
在此先感谢您的帮助和建议。
我能想到的最简单的方法是让每个 this-item
成为一个双元素列表,第 0 项是 "item" 本身,第 1 项是源海龟。 this-item
将由具有
的乌龟创建
set this-item list x self
(注意 "item" 本身是一个保留关键字,所以我的 "item" 是 x。)任何将 this-item
放入其列表中的乌龟都会知道 item 0 this-item
是事物本身,而 item 1 this-item
是它来自的乌龟。要计算列表中的条目数,比如 archive
,属于给定乌龟的条目数,比如 turtle 1
,来自给定乌龟的条目数,比如 turtle 3
,你可以使用
ask turtle 1 [show length filter [a -> item 1 a = turtle 3] archive]
如果您需要 turtle 3
在所有海龟档案中创建条目的次数,您可以分步完成。首先创建一个包含所有存档列表的列表。
let all-archives [archives] of turtles
然后使用 map 遍历该列表以列出每个存档中的条目数并对该列表求和。
show sum map [t -> length filter [a -> item 1 a = turtle 3] t ] all-archives
(我现在无法对此进行测试,因此请检查语法。)当然,如果您愿意,turtles
可以是所有海龟的子集。
我想知道如何在列表中找到项目的 'source'。我需要为此任务考虑的操作如下:
1) 在乌龟创建的列表中添加了一个项目;
2) 由于每只乌龟都有自己的列表,其中包含由不同乌龟创建的项目,我想设置一个计数器来说明这只乌龟选择乌龟 A 的项目的频率。
方法和代码:
这段代码在选定海龟的列表中添加了一个名为 'this_item' 的项目(局部变量):
ask one-of turtles [
set archive fput this_item archive
]
此其他代码将相同的项目添加到邻居列表中:
ask in-link-neighbors [
set archive fput this_item archive
]
我会设置一个局部变量,例如已选择,作为列表中的第一项。
let picked first archive
要查找项目的来源,我想使用 who
。但是,who
用于在提取项目后将其添加到自己的列表中的乌龟。
print (word "Source: " who " has this list " list " after added item " picked)
如果我认为一个变量 source
在乌龟创建新项目时通过使用我自己定义为项目的来源,这只会向我报告来源(学生)的品种,而不是相应的来源的乌龟(例如学生 2)。
这使得无法计算一个来源的项目被选择了多少次。
问题:
如何统计同一只乌龟的物品被选中的次数?
在此先感谢您的帮助和建议。
我能想到的最简单的方法是让每个 this-item
成为一个双元素列表,第 0 项是 "item" 本身,第 1 项是源海龟。 this-item
将由具有
set this-item list x self
(注意 "item" 本身是一个保留关键字,所以我的 "item" 是 x。)任何将 this-item
放入其列表中的乌龟都会知道 item 0 this-item
是事物本身,而 item 1 this-item
是它来自的乌龟。要计算列表中的条目数,比如 archive
,属于给定乌龟的条目数,比如 turtle 1
,来自给定乌龟的条目数,比如 turtle 3
,你可以使用
ask turtle 1 [show length filter [a -> item 1 a = turtle 3] archive]
如果您需要 turtle 3
在所有海龟档案中创建条目的次数,您可以分步完成。首先创建一个包含所有存档列表的列表。
let all-archives [archives] of turtles
然后使用 map 遍历该列表以列出每个存档中的条目数并对该列表求和。
show sum map [t -> length filter [a -> item 1 a = turtle 3] t ] all-archives
(我现在无法对此进行测试,因此请检查语法。)当然,如果您愿意,turtles
可以是所有海龟的子集。