2016-05-29 4 views
0

改行文字を使用して行を区切る8×8グリッドを表す文字列を作成するプログラムを作成しようとしています。グリッドの各位置にはスペースまたは "#"文字があります。文字はチェスボードを形成するはずです。あなたはこのパターンを生成するプログラムを持っている場合は、チェスボードの8x8グリッドパターンを生成するJavaScriptアルゴリズム

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

それはどのようなサイズのために動作するように、変数size = 8を定義し、プログラムを変更、出力:

console.logにこの文字列を渡すと、このような何かを示さなければなりません指定された幅と高さのグリッド。私はこれが機能しない理由を考え出すのトラブルを抱えている

var hash = "#"; 
var space = ' '; 
var size = 8; 

for (var x = 1; x <= size; x++); { 
    var line = ' '; 

    for (var y = 1; y <= size; y++); { 
    if (x % 2) { 
     if (y % 2) { 
     line = line + space; 
     } else { 
     line = line + hash; 
     } 
    } else { 
     if (y % 2) { 
     line = line + hash; 
     } else { 
     line = line + space; 
     } 
    } 

    } 

    console.log(line); 
} 

... :(

+0

'var line = '';' < - これは先頭に空白スペースを作成します。どのように動作していない、出力またはエラーは何ですか? – coyotte508

+2

あなたのループにはセミコロンがあります。つまり、実行されていないことを意味しています: 'for(var x = 1; x <= size; x ++);' –

+0

これはセミコロンでした。ありがとうございました!また、スペース!それを考慮しなかった。 –

答えて

1

あなたのループの終わりにセミコロンを削除します。セミコロンで

for (var x = 1; x <= size; x++) { 
    var line = ' '; 

    for (var y = 1; y <= size; y++) { 

を、エンジンには、次のことを行いますが:

  1. は、括弧内の「の」の後のものを実行します - iはその後10になります
  2. 中括弧内のものが実行されますその後
  3. あなたが行を追加する場合

は、それが

for (var i = 0; i < 10; i++); 
{console.log(i);} 

明らかになっ破る中括弧のためのボディが、新しいブロックではありません。

+0

D'oh!レスポンスありがとう! –

0

あなたが;を削除していることを確認してください - Sをforループの前に、あなたのforループが適切でないのことをするので(コードがちょうど一度に実行されます)カッコ内のロジックを実行:このような

何かがあなたがやりたいことになります。

var size = 8;  
 
for (var y = 0; y < size; y++) { 
 
    var line = ' '; 
 

 
    for (var x = 0; x < size; x++) { 
 
     line += (y + x + 1) % 2 ? ' ': '#'; 
 
    } 
 

 
    console.log(line); 
 
}

+0

彼はどこに間違っていたのOPを伝えることができますか? (余分なセミコロン)。この答えはそうでなければ役に立たない。 – coyotte508

+0

OPはなぜこのために機能を使用すべきですか?あなたは問題を解決しましたが、何も説明していないので、答えはOPが問題を理解するのを助けるものではありません。 – DarkDust

+0

構文が間違っていない、_behaviour_はOPが期待するものではありません。 – DarkDust

関連する問題