2017-04-26 74 views
-2

在嵌套的數組中,將用作網格有一個easir 檢查天氣的方法上下的地方都是空的或者是唯一的方法if,elsif聲明嵌套數組中的索引Ruby

   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] ] 

那麼這每次呼叫都會回收結構。