按一项对列表进行排序,并识别符合Netlogo中条件的记录

按一项对列表进行排序,并识别符合Netlogo中条件的记录,netlogo,Netlogo,我有一个子列表,如下所示 [0“煤”500 1430][0“气”300 1300][1“煤”600 1500][1“气”700 1400] 我想做四件事: 1.按子列表的第3项对主列表进行排序 2.将子列表的第2项累加,直到达到某个值。 3.确定最后添加的列表中的第3项。 4.然后,我想确定添加到第2点循环中的列表中的第0项和第1项,并要求这些海龟做些事情 我一直在探索表、列表等,但仍在为这段复杂的代码而挣扎。人们能建议他们如何编写代码吗 提前感谢您的帮助 我认为,以下似乎可以回答这个问题……尽

我有一个子列表,如下所示

[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
要走了
创造海龟2
设l[[0“煤炭”500 1430][0“天然气”300 1300][1“煤炭”600 1500][1“天然气”700 1400]]
;按项目2对列表进行排序
让我们按较大的l排序
显示排序
;累积项目3,直到达到极限
让k0
让n0
让我们限制2800
让turtleNos[]
让燃料[]
而[k<极限]
[
设置k+项目3(项目n已排序)
;累计项目0和1
设置套头衫lput项目0(项目n已排序)套头衫
设置燃料lput项目1(项目n)燃料
集合n+1
]
秀k
;显示添加到k的最后一个项目的项目3
显示项目3(项目(n-1)已排序)
;累积列表-注意:非唯一
表演套头衫
展示燃料
(foreach turtleNos)
[[xy]>询问海龟x[show y]]
结束
报告更大[l1 l2]
报告项目2 l1>项目2 l2
结束

我认为,以下似乎可以回答这个问题……尽管可能有更优雅的方式

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
要走了
创造海龟2
设l[[0“煤炭”500 1430][0“天然气”300 1300][1“煤炭”600 1500][1“天然气”700 1400]]
;按项目2对列表进行排序
让我们按较大的l排序
显示排序
;累积项目3,直到达到极限
让k0
让n0
让我们限制2800
让turtleNos[]
让燃料[]
而[k<极限]
[
设置k+项目3(项目n已排序)
;累计项目0和1
设置套头衫lput项目0(项目n已排序)套头衫
设置燃料lput项目1(项目n)燃料
集合n+1
]
秀k
;显示添加到k的最后一个项目的项目3
显示项目3(项目(n-1)已排序)
;累积列表-注意:非唯一
表演套头衫
展示燃料
(foreach turtleNos)
[[xy]>询问海龟x[show y]]
结束
报告更大[l1 l2]
报告项目2 l1>项目2 l2
结束

你能用数字做一个简单的例子吗?也许两个公司有两种技术?嘿@JenB谢谢,我现在简化并添加了一个数字示例。仍在努力解决这一问题,因此感谢您的帮助!你能用数字做一个简单的例子吗?也许两个公司有两种技术?嘿@JenB谢谢,我现在简化并添加了一个数字示例。仍在努力解决这一问题,因此感谢您的帮助!