2016-02-03 43 views
0

我進入Ruby,我搜索和搜索,看着語法,但我無法弄清楚什麼是錯誤的。語法錯誤,意外的關鍵字結束

該程序應該解決a ProjectEuler problem

我遇到這個語法錯誤四:

unexpected keyword_end end 

這是我的代碼:

grid = #20x20 "grid"/array of numbers 

largest = 0 

lateral(0,1,2,3) 
vertical(0,20,40,60) 
diagonal_right(0,21,42,63) 
diagonal_left(3,22,41,60) 

puts largest 

#lateral 
def lateral(a, b, c, d) 
    while (d < grid.size) 
     temp = grid[a] * grid[b] * grid[c] * grid[d] 

     if (temp > largest) 
      largest = temp 
     end 

     if ((d % 19) == 0) 
      a += 4 
      b += 4 
      c += 4 
      d += 4 
     else 
      a++ 
      b++ 
      c++ 
      d++ 
     end # <===== getting syntax error here 
    end 
end 

def vertical(a, b, c, d) 

    while (d < grid.size) 
     temp = grid[a] * grid[b] * grid[c] * grid[d] 

     if (temp > largest) 
      largest = temp 
     end 

     a++ 
     b++ 
     c++ 
     d++ 
    end # <===== getting syntax error here 
end 

def diagonal_right(a, b, c, d) 

    while (d < grid.size) 
     temp = grid[a] * grid[b] * grid[c] * grid[d] 

     if (temp > largest) 
      largest = temp 
     end 

     if ((d % 19) == 0) 
      a += 4 
      b += 4 
      c += 4 
      d += 4 
     else 
      a++ 
      b++ 
      c++ 
      d++ 
     end # <===== getting syntax error here 
    end 
end 

def diagonal_left(a, b, c, d) 

    while (d < (grid.size - 4)) 
     temp = grid[a] * grid[b] * grid[c] * grid[d] 

     if (temp > largest) 
      largest = temp 
     end 

     if ((a % 19) == 0) 
      a += 4 
      b += 4 
      c += 4 
      d += 4 
     else 
      a++ 
      b++ 
      c++ 
      d++ 
     end  # <===== getting syntax error here 
    end 
end 

標誌着我四點在那裏,我發現了語法錯誤。

我已經調整了圓括號,玩過並仔細檢查了end的位置和數量。我不明白它有什麼問題。這可能是翻譯問題嗎?我正在使用MacBook Pro。

+0

這是http://stackoverflow.com/q/3660563/128421 –

回答

5

運算符++在Ruby中不存在。你應該去+= 1

+0

Ohhhh geez的副本。卡住哈哈,做了伎倆。非常感謝! – cfrank12

1

你有非常奇怪的格式。如果已經通過下面的許多紅寶石styleguides的一個正確格式化你的代碼(或乾脆打Alt鍵 + + ˚F或任何組合是在你選擇的編輯器),你會馬上看到的問題。根據大多數風格指南,在二元中綴運算符的兩側應該有一個空格,並且在一元前綴運算符之後沒有空格。即你應該寫foo - bar!baz。你有沒有空間你的中綴操作符和一個換行在一元前綴運算符和它的操作數之間。

這是它看起來像正確的格式:

a + +b + +c + +d + + # plus what? 

你看這個問題?您缺少操作數到最後一個一元前綴+運算符。

+0

這是真正的答案。 – sawa

相關問題