Netlogo, Neighbours4 и выбор по цвету агента
Я новичок в NetLogo, поэтому, если мой вопрос читается как новичок... вот почему.
Я использую команду neigbhors4, чтобы идентифицировать четырех соседей агента-агрессора. Затем я хочу выбрать из четырех соседей в зависимости от их цвета и приоритета (черный, коричневый и белый). Если цвет соседа черный (приоритет № 1), следующий набор инструкций будет применен к этому агенту. Если ни один из соседей не черный, то следующий цвет в рейтинге приоритетов (коричневый) получит инструкцию.
Будет ли это лучше всего сделать, используя какой-то список?
1 ответ
Следующий ответ подчеркивает простоту для новичка. Так что речь идет только об очень конкретном поставленном вопросе.
to-report choose-neighbor
let _candidates neighbors4 with [pcolor = black]
if any? _candidates [report one-of _candidates]
set _candidates neighbors4 with [pcolor = brown]
if any? _candidates [report one-of _candidates]
set _candidates neighbors4 with [pcolor = white]
if any? _candidates [report one-of _candidates]
report nobody
end
Вы заметите, что этот код имеет много повторений. Возможно, будет хорошей идеей объединить такое повторение в подпрограмму, такую как
to-report choose-nbr [#color]
let _candidates neighbors4 with [pcolor = #color]
report ifelse-value (any? _candidates) [one-of _candidates] [nobody]
end