0

Есть небольшая программа, реализующая вычислительный конвейер. То есть сравниваются два массива на вхождение: если первый входит во второй, то из него берутся все значения и помещаются во второй, иначе второй сдвигается влево на один символ. И так движется до бесконечности, в моем случае 10 повторений.

Мне нужно, чтобы после каждой итерации выводилось значение нового массива. Когда я прописываю в цикле console.log(arrayTwo); он каждую итерацию выводит только одно значение массива, хотя он постоянно изменяется.

В чем проблема? Также был бы благодарен, если бы показали как можно улучшить код. Спасибо!

let array = [
    [1,0,0,1,0,0,0,1],
    [0,0,1,0,0,1,1,0],
    [0,1,0,0,1,0,0,0]
];
let arrayTwo = [
    [1,0,0,1,0,0,0,1],
    [0,0,1,0,0,1,1,0],
    [0,1,0,0,1,0,0,0]
];
let sum = 0;
let x = 0;
let y = 0;
while (x < 10){
    for (let j = 0; j < array.length; j++) {
        for (let i = 0; i < 8; i++)
            if ((array[j][i] == 1 && arrayTwo[j][i] == 0) || (array[j][i] == 0 && arrayTwo[j][i] == 1) || (array[j][i] == 0 && arrayTwo[j][i] == 0))
                sum = sum + 1;
        if (sum != 8 )
            y = y + 1;
        sum = 0;
    }
if (y &gt; 0) 
    for (let j = 0; j &lt; array.length; j++) {
        arrayTwo[j].shift();
        arrayTwo[j].push(0);
    }
else
    for (let j = 0; j &lt; array.length; j++) 
        for (let i = 0; i &lt; 8; i++)
                if (array[j][i] == 1 &amp;&amp; arrayTwo[j][i] == 0)
                    arrayTwo[j][i] = 1;
y = 0;
x = x +1;
console.log(arrayTwo);

}

  • "он каждую итерацию выводит только одно значение массива" - ?? –  Feb 21 '21 at 04:09
  • Спасибо! Не знал о таком методе. – Илья Feb 21 '21 at 04:13
  • 2
    @Igor, не надо править ошибки кода непосредственно в вопросе. – Grundy Feb 21 '21 at 05:40
  • @Grundy Там не было ошибок. –  Feb 21 '21 at 12:58
  • @Igor, после твоей правки (предыдущей) проблема автора вопроса перестает воспроизводиться – Grundy Feb 21 '21 at 13:03

0 Answers0