Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 如何列出相邻簇的P颜色?_Netlogo - Fatal编程技术网

Netlogo 如何列出相邻簇的P颜色?

Netlogo 如何列出相邻簇的P颜色?,netlogo,Netlogo,我有不同的斑块群,每一块都有不同的颜色,还有一只乌龟充当政府。 我需要让政府知道相邻集群的颜色 我试着用邻居的颜色ID列一个列表,但到目前为止,我只能列一个所有邻居补丁的列表 我使用的相关代码是: governments-own[ list-neighbors govcolorid ] to setup ask governments [ ... set govcolorid pcolor ...] end to find-neighbors foreach sort governments

我有不同的斑块群,每一块都有不同的颜色,还有一只乌龟充当政府。 我需要让政府知道相邻集群的颜色

我试着用邻居的颜色ID列一个列表,但到目前为止,我只能列一个所有邻居补丁的列表

我使用的相关代码是:

governments-own[
list-neighbors
govcolorid
]

to setup
ask governments [
...
set govcolorid pcolor
...]
end

to find-neighbors
foreach sort governments [
ask ? [
let my-patch patches with [ pcolor = [ govcolorid ] of myself ]
set list-neighbors (list [[pcolor] of neighbors] of my-patch)
]]
此代码打印一个如下所示的列表:

[[[18 92 85 18 92 85 18 18] [85 11 85 85 85 18 85 85] [85 85 85 85 85 18 85 85]]]
但我需要的只是相邻簇pcolor减去govcolorid(在本例中为85):

我试着使用地图、句子和删除重复的内容,但到目前为止,我还没有达到任何效果。如果你有有用的提示或例子,请分享

编辑:

根据您的评论,我用以下方法解决了问题:

to find-neighbors-patch
  foreach sort governments [
    ask ? [
  let _c [idgov] of ?
  let _frnds patches with [pcolor = _c]
  let _nmes (patch-set [neighbors] of _frnds) with [pcolor != _c]
  set list-neighbors-clusters remove-duplicates [pcolor] of _nmes
    ]]
end

谢谢

要将输出转换为所需的输出,请尝试以下代码: 本质上,将列表列表减少为单个列表,删除重复的列表,然后删除所需的值

set list-neighbors filter [ ? != 85] remove-duplicates reduce [sentence ?1 ?2] (first list-neighbors)

使用报告程序:

to-report find-nbr-colors [#gvt]
  let _c [color] of #gvt
  let _frnds patches with [pcolor = _c]
  let _nmes (patch-set [neighbors] of _frnds) with [pcolor != _c]
  report remove-duplicates [pcolor] of _nmes
end

为什么你要把你的列表邻居放在另一个列表里?这似乎是多余的。还有,你为什么要对政府进行分类?我不明白你为什么要维持秩序。您可能想问问政府[让我的补丁程序…设置邻居列表…]您的my patch变量是否正在尝试获取代理程序的补丁程序?如果是这样,为什么不在这里说补丁呢。我的补丁实际上是一个代理集,有点混乱。我有一个后续问题。我现在正试图将每个政府与相邻集群的政府联系起来。你建议我使用哪种程序?我试过了吗?乌龟继续,但我一定是在什么地方出错了。好的,我解决了我的后续问题。我所需要做的就是将列表转换为代理集。再次感谢您之前的帮助。
to-report find-nbr-colors [#gvt]
  let _c [color] of #gvt
  let _frnds patches with [pcolor = _c]
  let _nmes (patch-set [neighbors] of _frnds) with [pcolor != _c]
  report remove-duplicates [pcolor] of _nmes
end