Создание набора агентов вне списка

Это относится к предыдущему только что заданному вопросу.

Как я могу преобразовать список (который представляет черепах) в набор агентов?

Например, я хочу сделать

набор агентов, который содержит 4 элемента [черепаха 0 черепаха 3 черепаха 4 черепаха 7]

вне списка ["черепаха 0" "черепаха 3" "черепаха 4" "черепаха 7"]

Я пробовал "foreach" раньше.

Заранее спасибо ~!!

2 ответа

Решение

Я не уверен, почему вам нужно работать с таким списком, как

["turtle 0" "turtle 3" "turtle 4" "turtle 7"]

на первом месте. Хранить ссылки на агентов как что-либо, кроме прямых ссылок на агентов, обычно не очень хорошая идея.

При этом вы можете преобразовать такую ​​строку в набор агентов с помощью:

turtle-set map runresult ["turtle 0" "turtle 3" "turtle 4" "turtle 7"]

Если какой-либо из этих черепах не существует, они будут просто исключены из результирующего набора агентов.

Тем не менее, все это кажется мне несколько плохим советом. Если вы расскажете нам больше о том, чего пытаетесь достичь, возможно, мы могли бы предложить лучший подход в целом.

Вы по какой-то причине ограничены в работе со списком строк? Если нет, но вы все еще хотите получить список, я бы рекомендовал сначала создать списки, содержащие агентов. Если вы запишете это в файл позже, он все равно будет преобразован в строку. Внутренне гораздо проще работать с агентами напрямую.

Чтобы составить список агентов на основе списка номеров:

globals [ turtle-list num-list]

to setup 
  ca
  reset-ticks

  crt 3   

  set num-list [ 0 1 2 ]
  set turtle-list map [ i -> turtle i ] num-list 
  print turtle-list      
end

Обратите внимание, что если список содержит who номер для несуществующей черепахи, вы получите nobody в вашем списке.

Не обращайте внимания на все это, просто делайте то, что говорит @NicolasPayette.

Тогда вы * можете * использовать `foreach`, чтобы легко создать свой набор агентов для своего`turtle-list`: foreach turtle-list [ t -> set turtle-agentset (turtle-set turtle-agentset t) ] Однако, если ваша конечная цель является набором агентов, и вам не нужен список, вы можете пропустить шаг и просто создать набор агентов напрямую: для установки ca reset-ticks crt 3 установите num-list [ 0 1 2 ] установите turtle-agentset никто не будет foreach num-list [ n -> set turtle-agentset (черепаха-набор turtle-agentset черепаха n) ] конец печати turtle-agentset
Другие вопросы по тегам