两个列表组合

Two lists combination

每个代理都有两个列表。他们显示 1) 他们被谁吸引以及 2) 他们被谁吸引。 我想创建一个新的设置变量,只显示那些同样被彼此吸引的代理人。等吸引是:代理人(自己)的号码在对方代理人的'attracting'列表中,对方代理人的号码在第一个代理人(自己)的'attracting'列表中。到目前为止我的代码:

    if attracted != nobody [set attractinglists fput ([self] of attracted) attractinglists]

    if attracted != nobody [set attrlists fput ([self] of attracting) attrlists]

    set attractinglist [self] of other turtles with [member? myself attrlists]

已编辑以更好地回答下面评论中阐明的问题。

好吧,现在海龟将有一个 运行 列表,其中列出了它们曾经被吸引过的所有海龟。每一刻,海龟都会被其他三只海龟吸引。他们将这些海龟添加到他们的 "attracted-to" 列表中(如果它们不在该列表中)。接下来,海龟检查它们的 "attracted-to" 只海龟是否曾经被它们吸引过——如果是,它们会将那只海龟添加到 "reciprocal-attraction" 列表中(如果它还不存在)。这就是您所追求的吗?

turtles-own [
  attracted-to
  reciprocal-attraction      ;;; the turtles to which this turtle is attracted
]


to setup 
  ca
  create-turtles 10 [
    set attracted-to []
    set reciprocal-attraction []
  ]
end


to go  

  ask turtles [
    let temp-attraction sort n-of 3 other turtles
    show temp-attraction
    foreach temp-attraction [
      [x]->
      if ( member? x attracted-to = false ) [
        set attracted-to lput x attracted-to
      ]
    ]
  ]

  ask turtles [
    foreach attracted-to [ 
      [x]->
      if member? self [attracted-to] of x [
        if ( member? x reciprocal-attraction = false ) [
          set reciprocal-attraction lput x reciprocal-attraction
        ]
      ]
    ]
  ]

end