Python 莫尔斯到文本和组合词的递归搜索
嗨,我写了一个代码,它有两个功能,第一个功能是简单地从莫尔斯转换成文本,第二个功能是得到所有可能的单词组合,如果它们之间没有空格,它会递归地找到 问题是,第二个函数递归地获取可能的组合效果很好,但是第一个函数不是简单的将摩尔斯电码转换为纯文本,它会抛出错误 这是我的代码:Python 莫尔斯到文本和组合词的递归搜索,python,Python,嗨,我写了一个代码,它有两个功能,第一个功能是简单地从莫尔斯转换成文本,第二个功能是得到所有可能的单词组合,如果它们之间没有空格,它会递归地找到 问题是,第二个函数递归地获取可能的组合效果很好,但是第一个函数不是简单的将摩尔斯电码转换为纯文本,它会抛出错误 这是我的代码: import re morseFile="""A .- B -... C -.-. D -.. E . F ..-. G --. H .... I .. J .--- K -.- L
import re
morseFile="""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 --.."""
#simple function from moorse to text
def decodeMorse(morseCode):
split_morse_code = morseCode.strip().split(' ')
return ''.join([morseFile[code] for code in split_morse_code]).replace(' ', ' ')
#this is getting all the possible combination of words works fine
morse = {code:letter for line in morseFile.split("\n") for letter,code in [line.split()]}
def decode(coded,maxLen=10):
if not maxLen: return
for size in range(1,min(4,len(coded))+1):
code = coded[:size]
if code not in morse: continue
remaining = coded[size:]
if not remaining: yield morse[code]
for rest in decode(remaining,maxLen-1):
yield morse[code] + rest
print(sum(1 for _ in decode("-.-.-.--")))
for string in decode("-.-.-.--"):
if len(string)<9: print(string)
print(decodeMorse('.'))
重新导入
morseFile=“”A-
B-。。。
C-。-。
D-。。
E
F.-。
G--。
H
我
J---
K--
L.-。。
M--
N-。
O---
P.-。
Q---
R.-。
s
T-
U-
V-
W--
X--
Y---
Z--.“”
#从moorse到text的简单函数
def解码莫尔斯电码(莫尔斯电码):
拆分莫尔斯电码=莫尔斯电码.strip().split(“”)
返回“”。加入([morseFile[code]表示拆分莫尔斯电码中的代码。)。替换(“”)
#这使得所有可能的单词组合都能很好地工作
morse={code:morseFile.split中的行对应字母(“\n”)对应字母,[line.split()]中的代码}
def解码(编码,最大值=10):
如果不是maxLen:返回
对于范围内的尺寸(1,最小值(4,透镜(编码))+1):
代码=编码[:大小]
如果代码不是莫尔斯码:继续
剩余=编码[大小:]
如果没有剩余:产生莫尔斯[代码]
对于解码中的剩余部分(剩余部分,maxLen-1):
莫尔斯电码+剩余
打印(总和(1表示解码中的(“-.-”))
对于解码中的字符串(“-.-.-”):
如果len(string)您需要更改此行:
return '.join([morseFile[code] for code in split_morse_code]).replace(' ', ' ')
对此
return '.join([morse[code] for code in split_morse_code]).replace(' ', ' ')
也就是说:
莫尔斯文件->莫尔斯
return '.join([morse[code] for code in split_morse_code]).replace(' ', ' ')