字词字谜生成器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字词字谜生成器相关的知识,希望对你有一定的参考价值。

我有一个类似的字符串列表:

beel beez baee beae

并且我需要找到所有单词(如果存在)中相同的单词(或其字谜)。在这种情况下,魔术词是:

蜜蜂

或其字谜(例如:ebe,eeb)

我的解决方法是:

我比较它们之间的所有单词:

def es(list_str):
    for i in range(len(list_str)):
        a = list_str[i]
        for j in range(i+1, len(list_str)):
            b = list_str[j]

然后我搜索魔术词:

def generator(a,b):
    res = []
    a = list(a)
    b = list(b)
    for i in a:
        if i in b:
            res.append(i)
            b.remove(i)
    return sorted(res)

实际上,我的代码可以正常工作,我找到了我所需要的。问题是字符串列表很长,效率不高。

有人对如何找到这个单词有更好的主意吗?我不能使用特殊的图书馆,这是大学的功课。

答案
from collections import Counter

words = [
    "beel",
    "beez",
    "baee",
    "beae",
]

letter_counts = [Counter(word) for word in words]
shared_letters = letter: min(counts[letter] for counts in letter_counts) for letter in words[0]
print("".join(letter * count for letter, count in shared_letters.items()))
另一答案

一种方法是使用集合找到所有单词共有的字母,然后计算单词中每个字母出现的最小数量:

words = 'beel beez baee beae'.split()
common_letters = set.intersection(*(set(word) for word in words))
occurences = letter: min(word.count(letter) for word in words) for letter in common_letters
common_word = ''.join([letter * occurences[letter] for letter in common_letters])

print(common_word)
# bee

以上是关于字词字谜生成器的主要内容,如果未能解决你的问题,请参考以下文章

拼字游戏字谜生成器

为所有字谜生成相同的唯一哈希码

生成字谜的最有效(就时间而言)算法是啥?

解析服务器全文搜索 - 生成响应时出错。错误:需要搜索字词

Python 3:关于字谜的大学作业非常困难(至少对我而言)

Python - 递归字谜函数