【发布时间】:2019-12-27 15:37:42
【问题描述】:
我想知道是否有人可以帮助我解决这个我有点迷茫的问题。我有带有三维布尔列表[a b c] 其中a, b, c in {0, 1} 的海龟。我希望每只海龟都与另一个在列表的所有相同位置上具有1 的海龟创建链接。因此,乌龟应该确定它在其列表中的哪个位置有1,并寻找另一个在每个相同位置都有1 的乌龟。原来的海龟有0,第二个可以有1或0。
即:
乌龟 1 [0 1 0]
乌龟2[1 1 1]
乌龟 3 [1 0 1]
乌龟 4 [0 1 1]
Turtle 1 应该与 Turtle 2 或 Turtle 4 创建链接(因为两者都有 1 在 item 1,第二个位置)但 不 与 Turtle 3 因为它有一个 0in那个位置。 Turtle 4 应该只创建与 Turtle 2 的链接(1 在第二和第三位置),Turtle 3 也应该创建链接(1 在第一和第三位置),并且 Turtle 2 应该无法创建链接(没有海龟1 在所有三个位置)。
我拥有的是
let candidate one-of turtles with [list1 = [list1] of myself]
create-link-with candidate
这当然行不通,因为海龟会寻找另一个具有完全相同列表(包括零)的列表,而不是仅针对1 具有相同位置的列表。我知道这应该与foreach、map、reduce和filter有关,但我不能完全正确地理解语法......
祝大家年末快乐
【问题讨论】:
-
嗨@JenB 感谢您的评论。我想我理解你的意思,但如果我从 Turtle 4 中减去 Turtle 1,那么我将在
abs中得到[0 0 -1]、[0 0 1]。那么问题是我无法区分第一个零和第二个零,而我需要的是乌龟能够分辨出它们有第二个共同元素......除非我没有正确理解。 Turtle 3 与 Turtle 2 的链接可以工作,因为它会给出[0 -1 0],但我认为没有一种简单的方法可以查看何时发生 0,因为两者都有 1 或 0... -
再次感谢@JenB。我已经重写了我的问题,希望现在更清楚......我也会尝试两步的想法:)
-
不要尝试这两个步骤 - 以前不清楚所有 1 必须匹配。我已经稍微编辑了这个问题,但这两个步骤与该要求无关。
标签: netlogo agent-based-modeling