Netlogo:从列表列表中分配参数值

时间:2016-06-09 19:09:04

标签: list netlogo nested-lists

我试图处理netlogo中的列表列表。简而言之,我正在研究一种多物种植物扩散模型。每个物种都有几个参数,其值可以在模拟过程中改变。我正在尝试编写一个记者,它将遍历列表列表并将值分配给给定的物种。例如,这是列表列表

[["Hi" 52] ["C" 0] ["Hc" 60] ["Hd" 1]]

每个物种都有Hi,C,Hc和Hd作为其属性的一部分,但数量各不相同。我无法弄清楚如何遍历列表列表来执行此操作。

任何帮助将不胜感激。谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

您需要的只是一个foreach循环,如下所示。我使用run来设置变量的值。

var BatchedQuickSort = {
  swap: function(arr, a, b) {
    var temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
  },
  partition: function(items, left, right, cmp) {
    var pivot = items[Math.floor((right + left) / 2)];
    var i = left;
    var j = right;

    while (i <= j) {
      while (cmp(items[i],pivot)<0) i++;
      while (cmp(pivot,items[j])<0) j--;
      if (i <= j) {
        this.swap(items, i, j);
        i++;
        j--;
      }
    }
    return i;
  },
  sort: function(items, cmp, max, left, right) { //Ref: https://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/
    if (items.length > 1) {
      left = typeof left != "number" ? 0 : left;
      right = typeof right != "number" ? items.length - 1 : right;
      var index = this.partition(items, left, right, cmp);
      if (left < index - 1) this.sort(items, cmp, max, left, index - 1);
      if (index < right && (!max || index<=max)) this.sort(items, cmp, max, index, right);
    }
    return items;
  }
}

//Example Usage
var arr = [];
for(var i=0;i<2000000;i++) arr.push(Math.floor(Math.random() * 1000000));
function myCompare(a,b) { return a-b; }

var pageSize = Math.floor(arr.length/5);
var page = 1;
var timer = window.setInterval(function() {
  arr = BatchedQuickSort.sort(arr, myCompare, pageSize*page,pageSize*(page-1));
  if(page*pageSize>=arr.length) {
    clearInterval(timer);
    console.log("Done",arr);
  }
  page++;
},1);