首页 > 解决方案 > Dart - 从变化的变量中添加常量值到列表

问题描述

我在将列表添加到列表时遇到问题。当我更改变量“行”时,添加到列表“pusta”的位置不会保持不变。结果应如下所示:[[0, 1, 2], [1, 2, 3], [2, 3, 4]]。我得到 [[2, 3, 4], [2, 3, 4], [2, 3, 4]]。我在 DartPad 中写作。我尝试在添加到列表时将行更改为字符串,但对 Codewars 的测试并未将其作为解决方案。

logisticMap(width, height, xs, ys) {

  manhDist(width, height,xs,ys, pozx, pozy){
    int x =0; 
  List<int> lista =[];
  int i=0;

  while(x<xs.length) {
    num wart = (xs[x]-pozx).abs() + (ys[x]-pozy).abs();
    lista.add(wart);
    x++;
  }
  int minimum = lista[0];

  while (i<lista.length) {
    (lista[i]<minimum) ? minimum=lista[i] : minimum;
    i++;
  }
  return minimum;
}

  int i=0;
  int j=0;
  List<int> row =[];
  List<List> pusta=[];


  if (xs.isNotEmpty) {

    while (i<height) {
      row.clear();
      while (j<width) {
        row.add(manhDist(width, height, xs,ys,j,i));
        j++;
      }
      j=0;
      pusta.add(row);
      i++;
    }

    return pusta;

  } else {
    while (j < height) {
      row.clear();
      while (i < width) {
        row.add(null);
        i++;
      }
      i = 0;
      pusta.add(row);
      j++;
    }
    return pusta;
  }
}  

void main() {
  logisticMap(3, 3, [0], [0]);
}

我试图在其他用户代码中找到解决方案,但没有运气。不知道哪里不一样。他的代码工作:

List<List<int>> logisticMap(width,height,xs,ys) {
  List<List<int>> result = [];
  for (int i = 0; i < height; ++i) {
    List<int> rowResult = [];
    for (int j = 0; j < width; ++j) {
        rowResult.add(closestSupplyPoint(xs, ys, j, i));
    }
    result.add(rowResult);
  }
  return result;
}

int closestSupplyPoint(xs, ys, x, y) {
  int minDistance = null;
  for (int i = 0; i < xs.length; ++i) {
    int distance = (xs[i] - x).abs() + (ys[i] - y).abs();
    if (minDistance == null || distance < minDistance) {
      minDistance = distance;
    }
  }
  return minDistance;
}

标签: dart

解决方案


推荐阅读