@MsBink

Я не могу понять как это работает?

let board = "";

for (let y = 0; y < 8; y++) {
    for (let x = 0; x < 8; x++) {
        if ((x + y) % 2 === 0) {
        board += " ";  
        }
        else {board += "#";}
    }
    board += "\n";
}
console.log(board)


Я не могу понять почему это работает, я задаю увеличение для y и x на 1 за каждый цикл, притом условии если x+y делится без остатка,я задаю пробел для строки. Но как это выполняется? Ведь если с начала кода x увеличивается на 1 и y увеличивается на 1, получается 2 и делится без остатка, что даёт конкатенацию пробела,потом x=2 и y=2 в сумме - 4, делится на 2 без остатка, значит тоже пробел, следовательно пробелы должны идти вечно, но в консоли там #,почему так?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 3
Stalker_RED
@Stalker_RED
Вложенный цикл. Перебирается y от нуля до 7, а внутри него перебирается x от нуля до 7, и внутри сумма x и y проверяется на четность.

y=1 и x=1 то в сумме двойка - четное число. Когда x=2 и y=2 в сумме 4, тоже четное. А когда y=2 а x=3 в сумме семь - нечетное. И когда y=5 а x=4 - тоже нечетное. Я вам по секрету скажу, их там половина нечетных.
Ответ написан
Комментировать
402d
@402d
начинал с бейсика на УКНЦ в 1988
циклы вложенные.
первый цикл .
х = 0
пошел второй цикл
y = 0 , 1 , ... 7
а вот при 8 он закрывается и увеличивается x
Ответ написан
@sand3001
Всего по немногу

Я не могу понять почему это работает, я задаю увеличение для y и x на 1 за каждый цикл

Не так, у вас тут в цикл в цикле, то есть для y===0, перебирается x от 0 до 7, потом для y === 1, x от 0 до 7...
И так для всех y от 0 до 7
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BorLaze
@BorLaze
Java developer
Первая итерация: у == 0, х проходит от 0 до 7
0 + х -> _#_#_#_#
Вторая итерация: у == 1, х проходит от 0 до 7
1 + х -> #_#_#_#_

И так 8 раз.
Получается шахматная доска.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы