単語を取得してボード上に存在するかどうかを確認する機能を含むコーディング ブートキャンプ用の BoggleBoard ゲームを実行しています。単語が存在するかどうかを確認する私の方法は、私が「隣接行列」と呼んだものを作成することでした(これは実際の隣接行列ではないことを理解しています。これは、文字の実際の位置を連鎖させるのではなく、私が思いついたものです探していました)。3x3 グリッドのアイデアは次のとおりです。
0 | 1 | 2
3 | 4 | 5
6 | 7 | 8
対応する「隣接行列」は次のとおりです。
[ [1,3,4],
[0,2,3,4,5],
[1,4,5],
[0,1,4,6,7],
[0,1,2,3,5,6,7,8],
[1,2,4,7,8],
[3,4,7],
[3,4,5,6,8],
[4,5,7]
]
アイデアは、実際にボード上の単語を見つける必要があるのではなく、単語の文字の長さに対応する別の配列を作成することです。単語の各文字には、その単語がボード上に表示されるすべての場所のインデックスを示す配列内の配列があります。次に、基本的に、隣接行列ごとに現在の文字に隣接するセルが、次の文字の位置とインデックスを共有しているかどうかを確認します。
例: ボード:
C | A
C | T
探しているもの: 猫
letter_locations = [[0,2],[1],[3]]
Adjacency matrix =
[[1,2,3],
[0,2,3],
[0,1,3],
[0,1,2]]
最初の文字 C のインデックス = 0
- インデックス 0 に隣接するセル = [1,2,3] と [0,1,3] を連結 => [0,1,2,3]
- 文字 A はいずれかの 0 ,1,2,3? はい
-
次の文字 A のインデックスを続行 = 1
- インデックス 1 に隣接するセル = 0,2,3
- 文字 T は 0,2,3 のいずれかに出現しますか? はい
単語が見つかりました
私は現在、ゲームプレイの 4x4 グリッド用にゲームをセットアップしており、隣接マトリックスにハードコーディングしています。ユーザー入力に基づいてゲームのサイズをボードにし、ボードのサイズに応じて隣接行列を動的に作成する方法があるかどうかを確認したいと思います。これは可能ですか?
(これは実際の隣接行列ではないことを理解しています。これは、探していた文字の実際の位置をチェーンするのではなく、私が思いついたものです。)