2012-11-04 1 views
6

最近、私はLetterpressをたくさんプレイしています。Letterpress iOSゲームで文字を生成するための賢明なアルゴリズムは何ですか?

ゲームの目的は、ボード上の文字から単語を作って、できるだけ多くの青いタイルをスコアすることです。あなたがあなたの言葉を演奏するとき、その言葉を構成する手紙は、手紙が赤いタイルで囲まれていない限り、青色に変わります。

定期的な活版ボードは次のようになります。

私はそれ以外の場合は、いくつかでゲームをプレイするために本当にハードになり、ボード上の文字は、ルールのいくつかの並べ替えを生成しなければならないことに気づきましたボード。私はいくつかの母音がなければならないという規則だけを考えることができました。他のルールがあるのだろうかと思います。

さらに、これはBoggleのダイスを生成するのと同様のものになるのだろうかと思います。

+7

[文字のヒストグラム](http://www.google.com/?q=english%20letter%20ヒストグラム)に続いて「ちょうど」ランダムであれば驚かないでしょう)言葉。同様に、赤いタイルは単なるランダムです。もちろん、ソースコードを調べたり、他のいくつかの洞察力を持ったり、生成されたボードを分析したりして、より多くのことを述べなければなりません。時にはrandomが!@#$ですが、アルゴリズムのほうがdigram biasでオッズを知っているかもしれません。 –

答えて

4

私はuser166390の提案に基づいて解決策をまとめました。あなたが見る頻度は、Wikipediaから取った英語のものです。プログラムを数回実行して結果を確認するだけで、彼らは私にはかなり遊び心があります。私は一般的に、少なくとも4文字または5文字の単語を見つけることができますし、ゲームではあまりよくありません!とにかく、ここでのコードだ:

#!/usr/bin/env python 

from random import random 
from bisect import bisect_left 

letters = [c for c in "abcdefghijklmnopqrstuvwxyz"] 
frequencies = [8.167, 1.492, 2.782, 4.253, 12.702, 2.228, 2.015, 6.094, 6.966, 
       0.153, 0.772, 4.025, 2.406, 6.749, 7.507, 1.929, 0.095, 5.987, 
       6.327, 9.056, 2.758, 0.978, 2.360, 0.150, 1.974, 0.074] 

cumulative_frequencies = [sum(frequencies[0:i+1]) for i in xrange(len(frequencies))] 

for i in xrange(5): 
    line = "" 
    for j in xrange(5): 
     line += letters[bisect_left(cumulative_frequencies, random() * cumulative_frequencies[-1])] + " " 
    print line 

アイデアは、与えられた周波数に比例した確率でランダムにそれを選択するroulette wheel algorithmを使用して、各文字を生成するために、です。

+0

これよりも微妙です。例えば、「Q」が「選択」されている場合、「Q」を使用して有効な語が可能であることを保証するロジックがコード内に存在する。等 – jason

+0

一般的に、少なくとも1つの単語のためにボードのすべての文字を使用することは可能でしょうか?その場合、私は完全に困惑しています。 –

+0

掲示板のOP掲示板に、右上に 'C'があります。どのように地球上でそれを使用するのですか?頭字語はもちろん許可されていない限り。 –

1

私は、開発者のLoren Brichterがそれについて話していると聞いたことがあります。私はそれがGuy RitchieのDebugポッドキャストにあったと思うが、わからない。私はいくつかのことを覚えています。

彼は、少なくとも一定数の母音を保証します。

子音は母音とは別に生成されます。これは別の手紙配布を意味する。

彼はゲームの背後にある辞書を分析して、手紙の配布を思いついた。

Qは、私は言葉が、私は多くを再生Q.

で常に可能であるように保証されている選択された場合。何らかの理由でゲームが終了したことはありませんが、すべての文字が使用されています。私はそれが保証されているかどうかはわかりませんが、すべての手紙で常に単語が可能ですが、強制されていなくても実際にはそうであるようです。

+0

私もこのポッドキャストに耳を傾けました。それはかなりデバッグだと確信しています。私は彼が最大7つの母音を生成すると言ったと思う。それが事実なら、私は最小限が何であるか疑問に思います。そして、彼はどのようにしてその数を最大値として思いついたのですか? –

+0

Qを選択した場合、Iも選択されることを保証しますか?その場合、アルゴリズムは単純な分布ではありません。 –

+0

私はQを使ってゲームをしたことを覚えています。私もUもいなくても、あなたはまだQATやその他のゲームを作ることができます。何かあれば、* Q単語が再生可能であることを確認するだけです。 – cobbzilla

関連する問題