私は学校の問題を任されており、困惑しています。私がしなければならないことは、あいまいなモールス符号の文字列 (つまり、何が文字で何がそうでないかを示すスペースがない) を読み取り、そのモールス符号の可能なすべての有効な英語の翻訳を出力することです。インターネット上のどこかでこの正確な問題を解決するアルゴリズムを見たことがありますが、それを Python 3 に変換する方法がわかりません。私の人生では見つけることができません。
役立つこと:
プログラムが有効と見なす単語のリストがあります:ダウンロード
プログラムは、文法的に正しい文を出力する必要はなく、有効な単語を構成する文のみを出力します
words.txt
。- 文が有効かどうかを定義するいくつかの追加事項は、文に2つの同一の単語を含めることはできないということです。すべての単語は一意である必要があり、文中に 1 文字の単語と 2 文字の単語を 1 つ以上含めることはできません。
現時点では不完全ですが、すべての単語を対応するモールス符号の定義に並べ替える私のコード:
# Define the mapping from letter to Morse code. CODES = { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', } words={} f=open('words.txt').read() a=f for i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': a=a.replace(i,CODES[i]) f=f.split('\n') a=a.split('\n') for i in f: words[i]=a[f.index(i)] q=input('Morse: ')
これがどのように機能するかのテストケースの例は次のとおりです。
Morse: .--....-....-.-..-----.
A BED IN DOG
A DID IN DOG
A BLUE DOG
A TEST IF DOG
WEST I IN DOG
WEST EVEN A ON
WEST IF DOG