あなたに私の最後の答えの変更:
to setup
ca
ask patches with [pxcor > 0 ] [
set pcolor white
]
crt 1
end
to go
ask turtles [
let blacklist patches with [ pcolor = black ]
let northpatches patches with [ pycor > 0 ]
let northred (northpatches with [ member? self blacklist = false ])
ask northred [ set pcolor red ]
let border northred with [ any? neighbors4 with [ pcolor != red ] ]
ask border [
set pcolor blue
]
print count border
]
end
あなたはない領土ある隣人とあなたの地域のパッチのいずれかとの境界線/境界パッチを指定することができます。変更しなければならないので、私はあなたのセットアップなしでそれをテストすることはできません、再び
ask turtles [
print count territory with [ any? neighbors4 with [owner != myself ]
]
]
:あなたのためにそれはのようになります。
は国境上にあるパッチのエッジをカウントするには
の下に編集された、あなたは彼らが他のカメに属している彼らのneighbors4
を数えるかもしれません。その後、それらをその亀の周長に加えることができます。たとえば:
to assess-perimeter ;;; must be called by a turtle
print ("Assessing perimeter")
let current-turtle who
let temp-per-len 0
let border-patches patches with [ owner = current-turtle and any? neighbors4 with [ owner != current-turtle ] ]
show (word "I have " count border-patches " border patches")
ask border-patches [
;; One way to get each border patch to check each of its neighbors
let nobodies 4 - count neighbors4 ;; if any patches are on the edge of the world, returns the number of those edges
let non-territory-edges count neighbors4 with [ owner != current-turtle ]
let border-edges nobodies + non-territory-edges
set temp-per-len temp-per-len + border-edges
]
show (word "My perimeter length: " temp-per-len)
set perimeter-length temp-per-len
end
すべてのカメが自分の家全体の範囲を選択した後にそれが呼び出された場合、アイデアは、各カメはそのホーム範囲の境界を評価ということです。次に、それらの国境パッチのそれぞれが異なる所有者を持つneighbors4
を数えます。ループ内の合計変数として "temp-per-len"を使用しました。これを使用して、 "perimeter-length"をturtles-own
に設定しました。セットアップと定義を含むフルモデルコードhere。注 - コードをダウンロードまたはコピーする必要があります。モデルはHTMLフォーマットでうまく動作するには大きすぎます。
また、私は実際にこれは私が迅速なバージョンを行なったし、私の指を交差させperfectly-働いていたことを確認するためにカウントされませんでしたが、私はアイデアが理にかなっていると思いますし、うまくいけば、あなたが開始されます。
ありがとうございます。私は先週のあなたの投稿以来これを検討してきました。パッチの数をw/"neighbors4 [owner!= myself]とする"という考え方は、周りの数を近づけますが、正確ではありません。これらのパッチの1つに所有されている> 1隣接パッチがある場合、これは理にかなっても、1ペリメータユニットとしてカウントされます。たとえば、上の領域2のテキストボックスが指すパッチは、「所有者!=自分自身」のパッチを含むこれらの「隣人4」パッチの1つで、周辺距離に1単位の周囲長を追加しますが、実際には2単位を追加する必要があります。私はまだより正確な方法を決定しようとしています。 – User847462
ああ、周辺の定義としてパッチではなくパッチのボーダーを数えようとしていますが、それは正しいのですか?解決策を提示するために私の答えを編集します。 –