我试图绕过逻辑,我想不出最好的做法。
我有一个二维数组[10] [6] 10是列数,6是行数。我想检查数组中的3个或更多匹配项。有没有人知道一个好的例子或有解决方案的想法?我在线查看了一些资源,但我看到的所有资源都缺乏评论,很难阅读。
如果行中并排有3个或更多,或者列中有3个,则这些项会创建匹配。
答案 0 :(得分:1)
我不确定这是否是最佳方式,但这就是我的工作方式。这是lua代码
function checkWinningsFunction()
--Check x axis for matches
for i=1,6 do
for n=1,8 do
if(reelImages[n][i].value == reelImages[n+1][i].value and reelImages[n+1][i].value == reelImages[n+2][i].value) then
--Match
end
end
end
--Check y axis for matches
for i=1,4 do
for n=1,10 do
if(reelImages[n][i].value == reelImages[n][i+1].value and reelImages[n][i+1].value == reelImages[n][i+2].value) then
--Match
end
end
end
end
答案 1 :(得分:1)
这与@Dave的想法相同,可能更容易理解(t
是您的2D数组):
for y=1,6 do -- for each row
for x=1,10-2 do -- for each possible horizontal triplet
if t[x+1][y] == t[x][y] and t[x+2][y] == t[x][y] then
-- match
end
end
end
for x=1,10 do -- for each column
for y=1,6-2 do -- for each possible vertical triplet
if t[x][y+1] == t[x][y] and t[x][y+2] == t[x][y] then
-- match
end
end
end
它可能不是最快的算法,但它是最简单的算法,其他任何东西的潜在性能提升都不值得增加IMO的复杂性。
编辑:我没有意识到Dave是OP :)所以是的,这种方法有效。