0

ゲームマスターマインドを解決するためにドナルド・クヌースのアルゴリズムに従っています。

ただし、ステップ2で立ち往生しています:

  1. 残りの可能性のセット S を作成します (この時点で 1296 あります)。最初の推測は aabb です。

  2. 色付きのペグと白のペグが答えである場合、同じスコアを与えない S からすべての可能性を削除します。

  3. 可能な推測ごとに (必ずしも S である必要はありません)、可能な色付き/白のスコアごとに S から除外される可能性の数を計算します。推測のスコアは、そのような値の最小値です。最高得点 (ミニマックス) で推測をプレイします。

  4. 正しく理解できるまでステップ 2 に戻ります。

可能性のセット (基本的に 6 x 6 x 6 x 6) を生成します。ここから、 の初期推定を定式化しaabbます。「首謀者」は、xの白いペグとyの黒いペグの形でフィードバックを提供します。

白いペグは、推測の 4 つの色のうちの 1 つが正しいが、間違った場所にあることを示しています。黒いペグは、推測した 4 つの色のうちの 1 つが正しく正しい位置にあったことを示しています。

ここから、その情報に基づいて次の推測を変更する必要があります。

私の質問は: 私の最初の推測がaabbであり、私のフィードバックが であるとすると、たとえば1w1b、可能性のセットからどの順列を削除すればよいでしょうか?

4

2 に答える 2

1
def CalcScore(answer, solution):
    """ A function that will return a tupple of the number of white & black pegs """
    ...

todel = []
for poss in poss_answers:  # Assuming that poss_answers is a list/array of possible ansers
    if not current_score == CalcScore(ThisTry, poss):
       todel.append(poss)
for delthis in todel:
    poss_answers.remove(delthis)
于 2013-09-27T04:29:01.670 に答える