1

私はロジックに頭を悩ませようとしていますが、それを行う最善の方法が思いつきません。

私は2次元配列array [10] [6]を持っています。10は列の数で、6は行の数です。配列内に一致する項目が 3 つ以上あることを確認したい。誰かが良い例を知っているか、解決策のアイデアを持っていますか? オンラインでいくつかのリソースを見てきましたが、実際に見たものはすべてコメントがなく、読みにくいものでした。

行に 3 つ以上が並んでいる場合、または列に 3 つが重なっている場合、アイテムは一致します。

4

2 に答える 2

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 だとは思いませんでした :) はい、その方法は機能します。

于 2013-10-22T09:41:09.270 に答える
1

yこれが最善の方法かどうかはわかりませんが、それが私が仕事をしなければならなかった方法です. これは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
于 2013-10-22T05:25:30.023 に答える