0

ファイル内のアナグラムを検索するプログラムが必要です。例えば:

>>>anagram('words.txt', 'top')
top
pot

ファイルには、スペースを含まない単語の長いリストが含まれます。

tapmatlamebrainfamelookcookkoolkoocnamemane

これは私の現在のコードです:

def anagrams(filename, word):
    infile = open(filename, 'r')
    if not word:
        return ['']
    ret = []
    for i, d in enumerate(word):
        perms = anagrams(word[:i] + word[i+1:])
        for perm in perms:
            ret.append(d + perm)
    for i in ret:
        if i in infile:
            print (i)
        else:
            pass
4

1 に答える 1

1

これはあなたがしたいと思うことをするはずです

def anagram(filepath, word):
    with open(filepath) as f:
        text = ''.join(line.strip() for line in file)
    for i in xrange(len(text)-len(word):
        prop = text[i:i+len(word)]
        if all(char in word for char in prop) and all(prop.count(char) == prop.count(word) for char in prop):
            print prop

ファイルに「hi」と「there」の2つの単語だけが「hithere」として含まれている場合、「ith」のアナグラムを検索すると、が出力"hit"されることに注意してください。

于 2012-10-22T01:35:20.940 に答える