我正在尝试解决coffeescript中原本用于js的'棋盘'问题;这是个问题。
编写一个程序,创建一个代表8×8网格的字符串,使用换行符分隔行。在网格的每个位置处都有空格或“#”字符。角色应该形成棋盘。如果您有一个生成此模式的程序,请定义一个变量size = 8并更改程序,使其适用于任何大小,输出给定宽度和高度的网格。
a = 8
b = 8
board = ""
x = 0
y = 0
while y < a
y = y + 1
while x < b
x = x + 1
if x % 2 == 0
board = board + "#"
else
board = board + " "
print(board)
除了逐行改变图案外,一切似乎都能正常工作。它目前看起来像这样:
" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"
但我希望它看起来像这样。
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
答案 0 :(得分:0)
来自@Jonas W.的更新条件是正确的,但您还需要重置循环中的x
和board
变量:
a = 8
b = 8
board = ""
x = 0
y = 0
while y < a
y = y + 1
x = 0
board = ""
while x < b
x = x + 1
if (x + (y % 2)) % 2 == 1
board = board + "#"
else
board = board + " "
print(board)
但即使在这里,您的简报也存在一些不一致之处 - board
变量实际上只是一行。您可能希望在创建每一行后附加换行符(“\ n”),而不是重新设置它。但这也意味着你必须将你的打印行去缩进另一个级别,因为它现在在生成每一行后打印出来。
我建议您查看Coffeescript comprehensions而不是使用while循环。
答案 1 :(得分:0)
let a = ""
for (let i = 1; i <= 64; i++) {
if (i % 2 == 0) {
a += "#"
} else (a += " ")
if (i % 8 == 0) {
if ((i / 8) % 2 == 0) {
a += "\n";
}
else {
a += "\n"
a += " "
}
}
}
console.log(a)