Прохожу курс. Там в домашнем задании была задача создания шахматной доски в консоли.
Попробовал решить. Она вроде как отрабатывает правильно, но вот решение все таки кажется не совсем правильным. Как правильно переписать следующее решение? На что стоит обратить внимание? Все таки хочется решать задачи правильно.
function createChess(a, b) {
var value1 = "# ";
var value2 = " #";
var odd = "";
var even = "";
for (var i = 0; i < a / 2; i += 1) {
odd += value2;
even += value1;
}
for (var j = 0; j < b; j += 1) {
if (j % 2 != 0) {
console.log(odd);
} else {
console.log(even);
}
}
}
createChess(16, 16);
Вводим например 8, 8 и получаем доску размером 8x8. и выглядит она так:
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
Update/
Немного переписал решение. Но хз, лучше ли оно первого или нет. В целом похожи решения, но все же, как правильней и эффективней решить данную задачу?
Немного другое решение:
function createChess(a, b, param1, param2) {
var value1 = param1 || "#",
value2 = param2 || " ";
var odd = "",
even = "";
for (var i = 1; i <= b; i += 1) {
if (i % 2 != 0) {
for (var j = 0; j < a / 2; j += 1) {
odd += value1 + value2;
}
console.log(odd);
odd = "";
} else {
for (var k = 0; k < a / 2; k += 1) {
even += value2 + value1;
}
console.log(even);
even = "";
}
}
}
createChess(8, 8, "*", " ");
Второе решение теперь кажется не лучше первого. Так как каждая строчка заново пересоздает строку и кажется это не правильно и неэффективно будет. Хз в общем. Помогите решить правильно
PSS.
Попробовал еще порешать используя просто циклы. Получился более менее вариант, который меня более чем устраивает.
function createChessBoard(value) {
var board = "";
for (var i = 1; i < value*value; i += 1) {
if ((i % (value + 1)) == 0) {
board += "\n";
} else if (i % 2 != 0) {
board += "*";
} else {
board += " ";
}
}
return board;
}
console.log(createChessBoard(8));