私が正しく理解している場合、文字列を指定すると、その文字列に一致するダイスを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
プレーヤーのタイプ、たとえば、「行く」、そして (a)のプレーヤーのタイプの「G」の場合、コードはfirstletter(「G」)を呼び出し、グリッド内の位置のリスト「答え」を取得しますそれらの中に "g"を持っています。最初のものをハイライトします。 (b)プレーヤタイプ "o"では、コードはaddletter(answer、 "o")を呼び出し、グリッド内の "go"と呼ばれるパスのリストを取得します。再度、最初のものを強調表示します。
ありがとうございます!それは動作します:-) – jmasterx
@ user146780うれしい私は助けることができました! – redtuna