Eofquent- coffeescript中的棋盘

时间:2018-02-07 06:14:47

标签: javascript coffeescript

我正在尝试解决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)

除了逐行改变图案外,一切似乎都能正常工作。它目前看起来像这样:

" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"
" # # # #"

但我希望它看起来像这样。

 # # # #
# # # #
 # # # #
# # # #
 # # # #
# # # #
 # # # #
# # # #

2 个答案:

答案 0 :(得分:0)

来自@Jonas W.的更新条件是正确的,但您还需要重置循环中的xboard变量:

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)
相关问题