Как найти максимальный элемент списка черепах с условием - PullRequest
0 голосов
/ 22 января 2020

Мне нужно найти максимум списка по параметру (price). Список содержит три типа черепах, но только один из этих элементов характеризуется этим параметром. В частности, я хотел бы найти дом (house) по самой высокой цене и увидеть его размер (dim) и его владельца (landlord). Цена на дом принадлежит. Я попытался определить локальную переменную и установить ее как максимум из my-list для набора черепах следующим образом:

let selected_item max-one-of turtle-set my-list [prices]

, но, к сожалению, он не возвращает список из трех элементов (например, (house 2, dim 4, landlord 3) ), но только один (house 2). Я думаю, что проблема связана с набором черепах, а не с определением моего списка, но, возможно, я ошибаюсь.

ОБНОВЛЕНИЕ: я хотел бы иметь список из трех черепах [[(house 2, dim 4, landlord 3)], [(house 3, dim 2, landlord 7), (house 4, dim 4, landlord 7)], ... ], где house это тот, с самым высоким price. Сейчас у меня есть только один элемент, (house 2), а не другая информация (dim and landlord). Поэтому, когда я добавляю элемент вверху списка каждой черепахи (let-agent), у меня появляется

[[(house 2, dim 4, landlord 3)], **(house 3)** , [(house 5, dim 4, landlord 3)], ... ]

Элемент, выделенный жирным шрифтом (дом 3) взято из кода выше, то есть let selected_item max-one-of, и я думаю, что это потому, что я рассматриваю только дом, а не других черепах (dim и landlord). Однако, когда я добавляю элемент в списки черепах, я добавляю их правильно, и это объясняет, почему у меня список частично корректный (элементы не выделены жирным шрифтом в приведенном выше примере). Подскажите, пожалуйста, что я делаю не так в выборе?

Спасибо

1 Ответ

2 голосов
/ 23 января 2020

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

let selected_item max-one-of turtle-set my-list [prices]
let size_selected [dim] of selected_item
let landlord_selected [landlord] of selected_item

Поскольку у других видов черепах в списке нет цен, это должно работать. Но я думаю, что было бы яснее (и лучше кодировать, если у вас будет цена позже) использовать только соответствующих черепах. В этом случае вы можете захотеть:

let list-houses turtle-set my-list with [breed = house]
let selected_item max-one-of list-houses [prices]
let size_selected [dim] of selected_item
let landlord_selected [landlord] of selected_item
let new-item (list selected-item size-selected landlord-selected)
let my-list fput new-item my-list
...