Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по циклам, как работает код. (https://javascript.ru/forum/misc/80754-vopros-po-ciklam-kak-rabotaet-kod.html)

orlovski_y 27.07.2020 04:18

Вопрос по циклам, как работает код.
 
Здравствуйте. Только начал изучать JS, столкнулся с трудностями при выполнении следующего упражнения:
Напишите программу, создающую строку, содержащую решётку 8х8, в
которой линии разделяются символами новой строки. На каждой позиции
либо пробел, либо #. В результате должна получиться шахматная доска.
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
Когда справитесь, сделайте размер доски переменным, чтобы можно было
создавать доски любого размера.

На просторах этого форума нашел следующее решение:
var result = "\n";
for (var row = 1; row <= 8; row++) {
  for (var cell = 1; cell <= 8; cell++) {
    result += (row % 2 == cell % 2) ? "#" : " "; //Можно еще побитово - (row & 1 == cell & 1)
  }
  result += "\n";
}
console.log(result);


В целом, мне понятны все операции, однако никак не доходит result += (row % 2 == cell % 2) ? "#" : " ";. По идее, # или " " ставится в зависимости от false или true в выражении слева от ? , но я не могу понять, как получается false, если на каждой итерации цикла и row и cell принимают равные значения, а значит и остаток у них равный.


Прошу прощения за столько элементарный вопрос, но я правда не могу догнать:no: :help:

laimas 27.07.2020 06:00

Это смотря как решать, способов то будет много:

var row = 8, col = 8, sumbol = '#', square = '';

for(var i=0; i<row; ++i) square += sumbol.repeat(col) + '\n'; 

console.log(square)

рони 27.07.2020 07:35

Цитата:

Сообщение от orlovski_y
row и cell принимают равные значения

:-? почему? условно при row = 1 , cell от 1 до 8 успеет принять значения.
row % 2 == cell % 2 --- перевод: когда чётность строки и чётность ячейки совпадают добавить "решётку", значит если номер строки делится без остатка (строка чётная) значит на такой строке, все чётные ячейки будут с решёткой, а на нечётной строке, во все нечётные ячейки добавится решётка.

orlovski_y 28.07.2020 06:44

Спасибо за помощь!


Часовой пояс GMT +3, время: 09:21.