Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript矩阵操作不起作用_Javascript_Regex_Matrix - Fatal编程技术网

javascript矩阵操作不起作用

javascript矩阵操作不起作用,javascript,regex,matrix,Javascript,Regex,Matrix,对于“代码的出现”中的一个问题,这是一个糟糕的编码解决方案: 我不知道原因,因为我的代码工作不正常,我有一个与正则表达式相关的错误,原因是我没有重置regexp对象的指针,现在这个错误已经修复了,我想,但我所知道的是我做得不好 问题是我的代码显示的解决方案不正确,您可以在我提供的链接上提交解决方案,并获得解决方案的反馈 正确答案:543903 给定解决方案:418954 // day 6 of advent of code var input = "removed, take from pro

对于“代码的出现”中的一个问题,这是一个糟糕的编码解决方案:

我不知道原因,因为我的代码工作不正常,我有一个与正则表达式相关的错误,原因是我没有重置regexp对象的指针,现在这个错误已经修复了,我想,但我所知道的是我做得不好

问题是我的代码显示的解决方案不正确,您可以在我提供的链接上提交解决方案,并获得解决方案的反馈

正确答案:543903 给定解决方案:418954

// day 6 of advent of code

var input = "removed, take from problem";

function processInput(input, matrix) {
  var linesOfInput = input.split("\n");
  var matches;
  var turnOnRE = /turn on (\d+),(\d+).*?(\d+),(\d+)/g;
  var turnOffRE = /turn off (\d+),(\d+).*?(\d+),(\d+)/g;
  var toggleRE = /toggle (\d+),(\d+).*?(\d+),(\d+)/g;

  // regular expression objects lastIndex property must be 'reseted' in order to work well
  for (var i = 0 ; i < linesOfInput.length; i++) {
    turnOnRE.lastIndex = 0;
    turnOffRE.lastIndex = 0;
    toggleRE.lastIndex = 0;
    matches = turnOnRE.exec(linesOfInput[i]);
    if (matches != null) {
      manipulateLights(matrix, matches[1], matches[2], matches[3], matches[4], true);
      continue;
    }
    matches = turnOffRE.exec(linesOfInput[i]);
    if (matches != null) {
      manipulateLights(matrix, matches[1], matches[2], matches[3], matches[4], false);
      continue;
    }
    matches = toggleRE.exec(linesOfInput[i]);
    manipulateLights(matrix, matches[1], matches[2], matches[3], matches[4]);
  }

}

function manipulateLights(matrix, startI, startJ, endI, endJ, newValue) {
  if (newValue == undefined) { // toogle
    for (var i = startI ; i <= endI; i++) {
      for (var j = startJ ; j <= endJ; j++) {
        matrix[i][j] = !matrix[i][j];
      }
    }
    console.log(startI, startJ, endI, endJ, newValue);
  } else {
    for (var i = startI ; i <= endI; i++) {
      for (var j = startJ ; j <= endJ; j++) {
        matrix[i][j] = newValue;
      }
    }
    console.log(startI, startJ, endI, endJ, newValue);
  }
  console.log(countTurnedOnLights(matrix));
}

function countTurnedOnLights(matrix) {
  var turnedOn = 0;

  for (var i = 0 ; i < matrixWidth; i++) {
    for (var j = 0 ; j < matrixHeigth; j++) {
      if (matrix[i][j] == true) {
        turnedOn++;
      }
    }
  }

  return turnedOn;
}

var matrixHeigth = 1000;
var matrixWidth = 1000;

// define a bidimensional array, is almost like in C++
var lightMatrix = new Array(matrixWidth);
for (var i = 0 ; i < matrixWidth; i++) {
  lightMatrix[i] = new Array(matrixHeigth);
}

// turn off all lights
for (var i = 0 ; i < matrixWidth; i++) {
  for (var j = 0 ; j < matrixHeigth; j++) {
    lightMatrix[i][j] = false;
  }
}

processInput(input, lightMatrix);
console.log(countTurnedOnLights(lightMatrix));
//代码出现的第6天
var input=“已删除,从问题中提取”;
函数processInput(输入,矩阵){
var linesofinit=input.split(“\n”);
var匹配;
var turnOnRE=/打开(\d+),(\d+).*(\d+),(\d+)/g;
var turnOffRE=/关闭(\d+),(\d+).*(\d+),(\d+)/g;
变量toggleRE=/toggle(\d+),(\d+).*?(\d+),(\d+)/g;
//必须“重置”正则表达式对象lastIndex属性才能正常工作
对于(变量i=0;i对于(var i=startI;iOK),我发现了错误——当您第一次创建for循环时,正则表达式匹配项被视为字符串

for (var i = startI ; i <= endI; i++) {
    for (var j = startJ ; j <= endJ; j++) {

用于(var i=startI;i具体错误是什么?什么不按预期工作?
代码工作不正常
详细说明。它应该做什么?它在做什么?你发现了什么错误?你在调试器中发现了什么?我没有使用调试器,问题是我得到的解决方案不正确,你可以在页面。我编辑抱歉。
我的代码显示的解决方案不正确
它应该显示什么解决方案以及它实际显示了什么?不要让我们很难帮助您,让我们自己去查找这些内容。只需给我们所有相关的详细信息。另外,为什么不使用调试器?这就是问题的关键所在现有!@takendarkk为使您更轻松而编辑,抱歉