2017-04-26 18 views
-2

グリッドとして使用されるネストされた配列内にあるのは 天候の天候を確認する方法は空であるか、if、elsifの唯一の方法です文ネストされた配列内のインデックス

   if maze[i][j-1].to_i == index 
       maze[i][j-1] = ">" 
       #down 
      elsif maze[i+1][j].to_i == index 
       maze[i+1][j] = ">" 
       # UP 
      elsif maze[i-1][j].to_i == index 
       maze[i-1][j] = ">" 
       #right 
      elsif maze[i][j+1].to_i == index 
       maze[i][j+1] = ">" 
      end 
+0

投稿されたコードは不完全です。また、配列境界を渡さないように注意する必要があります。 'j == 0 'の場合、' j-1'は配列の外側にあります。 – axiac

答えて

0

すなわちはるかに簡単にはないが、これを行うにはクリーンな方法は、デフダウン?、デフアップ

のようないくつかの真偽値のチェック方法を作ることでしょうか? if/elsifでチェックしているすべてのロジックをカプセル化します。以下のような

何か:

if down? 
do the thing 
etc.. 

また、case文を使用して試すことができます。

0

ジャストマッチのオフセットおよびテストの配列を作成:

hi, hj = [ [-1, 0], [1, 0], [0, 1], [0, -1] ].find do |di, dj| 
    maze[i + di][j + dj].to_i == index 
end 

if (hi && hj) 
    maze[i + hi][j + hj] = '>' 
end 

あなたは多くのテストをやっている場合は、コンテンツとしてそれを定義するために理にかなっています:

UDLR = [ [-1, 0], [1, 0], [0, 1], [0, -1] ] 

続いていること構造は各呼び出しごとにリサイクルされます。

関連する問題