如何找到具有条件的海龟列表的最大元素

How to find the maximum element of a list of turtles with a condition

我需要通过参数 (price) 找到列表的最大值。 该列表包含三种类型的海龟,但只有其中一种元素具有此参数的特征。 具体来说,我想找到价格最高的房子 (house) 并查看它的大小 (dim) 和它的所有者 (landlord)。价格是房子自己的。 我尝试定义一个局部变量并将其设置为 turtle-set my-list 的最大值,如下所示:

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

但不幸的是,它不是 return 三个元素的列表(例如 (house 2, dim 4, landlord 3)),而只有一个 (house 2)。 我认为问题是由于 turtle-set 而不是定义 my-list,但也许我错了。

更新: 我想要的是三只乌龟 [[(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)], ... ]

粗体项 (house 3) 来自上面的代码,即 let selected_item max-one-of 我认为这是因为我只考虑房子而不是其他海龟(dimlandlord)。然而,当我将项目添加到海龟的列表中时,我以正确的方式添加它们,这解释了为什么我有一个部分正确的列表(上面示例中的项目不是粗体)。你能告诉我我在选择中做错了什么吗?

谢谢

您要的是最高价的房子,这就是它给您的。因此,您可以将答案设置为一个变量,然后询问它的其他特征。类似于:

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