Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 莫尔斯到文本和组合词的递归搜索_Python - Fatal编程技术网

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('  ',  ' ')