我正在进入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 :(得分:5)
++
运算符在Ruby中不存在。你应该去+= 1
。
答案 1 :(得分:1)
你的格式非常奇怪。如果您已经通过遵循许多Ruby样式指针中的一个来正确地格式化了代码(或者只是按 Alt + Shift + F 或者无论组合是什么在您选择的编辑器中),您会立即看到问题所在。根据大多数样式指南,二进制中缀运算符的两边应该有一个空格,并且在一元前缀运算符之后没有空格。即你应该写foo - bar
和!baz
。您的中缀运算符周围无空格,一元前缀运算符与其操作数之间有换行符。
这是正确格式化的:
a + +b + +c + +d + + # plus what?
你看到了问题吗?您缺少最后一个前缀+
运算符的操作数。