私が正しく理解している場合、文字列を指定すると、その文字列に一致するダイスを通る1つのパスを強調表示する必要があります。いくつかの選択肢がある場合があるため、文字を追加すると、強調表示される内容が完全に変わる可能性があります。ここでは、前のサブストリングの結果を保持することをお勧めします。そのため、最初からやり直す必要はありません。次に行うべき合理的なことは、すべての可能なパスを計算することです。
与えられた文字列sの答えは、パスのリストになります。ここで、パスはグリッド座標のリストです。各パスは合理的に強調表示できるものなので、最初のパスを強調表示するだけです。文字列に文字を追加すると、展開できるパスが見つかり、展開できないパスが削除されます。
恐れ入りますが、vbコードの書き方がわかりません。擬似コードを要求したので、代わりに大まかなPythonのような擬似コードを示します。ボグルグリッドを16項目のリストとしてコーディングしています。neighbors(x)関数は、隣接する位置のリストを返します([x-1、x + 1、x-4、x + 4]になるエッジケースを除く)。
def firstLetter(typed):
answer = []
for pos in range(16): if grid[pos]==typed: answer += [pos]
return answer
def addletter(partialanswer, typed):
answer2 = []
for partial in partialanswer:
for neighbor in neighbors(partial[-1]):
if grid[neighbor]==typed:
# partial+[neighbor] is a list. answer2 is a list of such lists.
answer2 += partial + [neighbor]
return answer2
たとえば、プレーヤーが「go」と入力した場合、(a)プレーヤーが「g」と入力すると、コードはfirstletter( "g")を呼び出し、グリッド内で「g」が含まれる位置のリスト「answer」を取得します。 。たとえば、最初のものを強調表示します。(b)プレーヤーは「o」と入力し、コードはaddletter(answer、 "o")を呼び出し、「go」と書かれたグリッド内のパスのリストを取得します。もう一度、最初のものを強調表示します。