Вопрос по циклам, как работает код.
Здравствуйте. Только начал изучать 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: |
Это смотря как решать, способов то будет много:
var row = 8, col = 8, sumbol = '#', square = ''; for(var i=0; i<row; ++i) square += sumbol.repeat(col) + '\n'; console.log(square) |
Цитата:
row % 2 == cell % 2 --- перевод: когда чётность строки и чётность ячейки совпадают добавить "решётку", значит если номер строки делится без остатка (строка чётная) значит на такой строке, все чётные ячейки будут с решёткой, а на нечётной строке, во все нечётные ячейки добавится решётка. |
Спасибо за помощь!
|
Часовой пояс GMT +3, время: 00:47. |