Не пойму, в чем проблема

Программа должна модифицировать массив согласно rules, я не понимаю, почему [1, 0, 1, 1] смодифицировался некорректно, хоть остальные 3 корректно прошли

var rules = [
  [[0, 0, 0, 0], [0, 0, 0, 0]],
  [[0, 0, 0, 1], [1, 0, 0, 0]],
  [[0, 0, 1, 0], [0, 0, 0, 1]],
  [[0, 0, 1, 1], [0, 0, 1, 0]],
  [[0, 1, 0, 0], [0, 0, 0, 0]],
  [[0, 1, 0, 1], [0, 0, 1, 0]],
  [[0, 1, 1, 0], [1, 0, 1, 1]],
  [[0, 1, 1, 1], [1, 0, 1, 1]],
  [[1, 0, 0, 0], [0, 1, 0, 0]],
  [[1, 0, 0, 1], [0, 1, 0, 1]],
  [[1, 0, 1, 0], [0, 1, 1, 1]],
  [[1, 0, 1, 1], [1, 1, 1, 1]],
  [[1, 1, 0, 0], [1, 1, 0, 1]],
  [[1, 1, 0, 1], [1, 1, 1, 0]],
  [[1, 1, 1, 0], [0, 1, 1, 1]],
  [[1, 1, 1, 1], [1, 1, 1, 1]]
];

var groopedPiramid = [[0, 1, 1, 0], [1, 1, 0, 0], [1, 0, 1, 1], [0, 1, 0, 1]];

groopedPiramid = groopedPiramid.map(groop => {
  let result = null;

  for (let s = 0; s < rules.length; s++) {
    let consilience = true;

    for (let y = 0; y < 3; y++) {
      if (groop[y] !== rules[s][0][y]) {
        consilience = false;
        break;
      }
    }

    if (consilience) {
      result = rules[s][1];
      break;
    }
  }

  if (result === null) {
    return groop;
  } else {
    return result;
  }
});

groopedPiramid.forEach(element => {
  console.log(element);
});

understand

а нет, еще один вариант некорректный

Не понятно что значит “корректно” и как применяются правила. Добавь информации согласно формату тут чтобы было проще разобраться.

Та я разобрался вроде, for (let y = 0; y < 3; y++)
вот проблема, оно не всю строку проверяло, а только 3 элемента

по rules если совпадает с условием (левый подмассив), то меняет элемент на правый подмассив