【问题标题】:Split array to parts [duplicate]将数组拆分为部分[重复]
【发布时间】:2021-05-04 20:41:03
【问题描述】:

我正在学习飞镖。我有简单的 JS 代码,将数组拆分为多个部分,例如:

2: [1,2,4,6,8], [14,17,18,19]
3: [1,2,4], [6,8,14], [17,18,19]
4: [1,2], [4,6], [8,14], [17,18,19]

有人可以帮我将后续代码转换为 Dart 吗?

function split(arr, numParts) {
  const partSize = arr.length / numParts | 0;

  return Array
    .from({ length: numParts }, (n, i) => i * partSize)
    .map((n, i, a) => arr.slice(n, a[i + 1]));
}

console.log(split([1,2,4,6,8,14,17,18,19,20], 3)); // [1,2,4] [6,8,14] [17,18,19,20]

我只能转换几行:

split(List<int> arr, int numParts) {
  var partSize = arr.length / numParts;

}

但是在休息部分需要帮助。

【问题讨论】:

标签: algorithm dart


【解决方案1】:

这样的?我不确定这就是您希望在组之间共享数字的方式:

void main() {
  for (var i = 1; i <= 10; i++) {
    print('${i.toString().padLeft(2)} | ${split([1, 3, 4, 5, 6, 12, 1, 5, 6, 1], i)}');
  }
  //  1 | [[1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]
  //  2 | [[1, 3, 4, 5, 6], [12, 1, 5, 6, 1]]
  //  3 | [[1, 3, 4], [5, 6, 12], [1, 5, 6, 1]]
  //  4 | [[1, 3], [4, 5], [6, 12], [1, 5, 6, 1]]
  //  5 | [[1, 3], [4, 5], [6, 12], [1, 5], [6, 1]]
  //  6 | [[1], [3], [4], [5], [6], [12, 1, 5, 6, 1]]
  //  7 | [[1], [3], [4], [5], [6], [12], [1, 5, 6, 1]]
  //  8 | [[1], [3], [4], [5], [6], [12], [1], [5, 6, 1]]
  //  9 | [[1], [3], [4], [5], [6], [12], [1], [5], [6, 1]]
  // 10 | [[1], [3], [4], [5], [6], [12], [1], [5], [6], [1]]
}

List<List<T>> split<T>(List<T> list, int parts) {
  final partSize = list.length ~/ parts;

  return [
    for (var i = 0; i < parts; i++)
      if (i + 1 < parts)
        list.sublist(i * partSize, (i + 1) * partSize)
      else
        list.sublist(i * partSize)
  ];
}

此外,如果您的部分多于值,则此解决方案的行为会有些有趣:

11 | [[], [], [], [], [], [], [], [], [], [], [1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]
12 | [[], [], [], [], [], [], [], [], [], [], [], [1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]
13 | [[], [], [], [], [], [], [], [], [], [], [], [], [1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 2013-10-20
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2017-12-05
    • 2014-07-25
    相关资源
    最近更新 更多