netlogo - 按一项排序列表并在Netlogo中识别满足条件的记录
问题描述
我有一个子列表列表,如下所示
[[0“煤” 500 1430] [0“煤气” 300 1300] [1“煤” 600 1500] [1“煤气” 700 1400]]
我想做四件事:
1. 按子列表的第 3 项对主列表进行排序
2. 将子列表的第 2 项累积求和,直到达到某个值。
3. 确定最后添加的列表中的第 3 项。
4. 然后我想识别第 2 点中添加到循环中的列表的项目 0 和 1,并要求这些海龟做点什么。
我一直在探索表格、列表等,但在这段复杂的代码中苦苦挣扎。人们可以建议他们如何编码吗?
在此先感谢您的帮助!
解决方案
以下似乎回答了这个问题,我认为......虽然可能有更优雅的方式
to go
create-turtles 2
let l [[0 "coal" 500 1430] [0 "gas" 300 1300] [1 "coal" 600 1500] [1 "gas" 700 1400]]
;sort the list by item 2
let sorted sort-by bigger l
show sorted
;accumulate item 3 until limit reached
let k 0
let n 0
let limit 2800
let turtleNos []
let fuels []
while [k < limit]
[
set k k + item 3 ( item n sorted )
;accumulate item 0 and 1
set turtleNos lput item 0 ( item n sorted ) turtleNos
set fuels lput item 1 ( item n sorted ) fuels
set n n + 1
]
show k
;show item 3 for the last item added to k
show item 3 (item ( n - 1 ) sorted)
;accumulated lists - note non-unique
show turtleNos
show fuels
(foreach turtleNos fuels
[ [x y] -> ask turtle x [show y] ])
end
to-report bigger [l1 l2]
report item 2 l1 > item 2 l2
end
推荐阅读
- cxf - 无法使用 Apache CXF 客户端从 WS 服务接收消息:读取超时
- swiftui - 如何在 SwiftUI 中使用顶部而不是底部的标题创建 TabView
- sql - 将数据库从服务器复制到本地数据库(我只需要复制结构,没有数据)
- javascript - 使用分页对表中的所有行进行排序
- c++ - 在 Linux 的情况下替换 Windows 特定的 HANDLE、事件创建和同步 API
- javascript - 将相同的字段项转换为值数组
- java - Scenswitch 上的 Javafx NullPointerException
- html - HTML/css 在打印时重复背景图像两次
- java - 将数据集和表型标签文件加载到 GSEA 时出现问题
- websocket - 与本地服务器的 websocket 连接