gpt4 book ai didi

python - 循环遍历文件列表并针对一个 9 字母单词的每种排列测试每个单词

转载 作者:行者123 更新时间:2023-12-01 03:16:04 25 4
gpt4 key购买 nike

我正在为学校做一个简单的 python 项目,其中用户尝试在 30 秒内从 9 个字母的随机池中找​​到最长的真实单词。通过循环遍历包含许多英语单词的文件(它有 114,000 个单词,可能不包括所有单词),可以很容易地测试用户的答案是否是真实的单词。事实上,这需要一瞬间的时间才能运行。

但是,为了检查随机字母池是否存在完整的“解决方案”(9个字母的真实单词),除了测试9个字母的每个排列之外,我想不出任何其他方法针对文件中每个单词的单词池。问题是,这效率很低,大约需要 7 分钟。毕竟,考虑到有9个!字谜的(阶乘)排列,“随机”模块不排除以前的排列,并且文件中有很多单词,计算机必须进行超过 500 亿次比较。最后,没有找到这个词(使用“幸福”的字谜词)。这是我尝试过的代码:

# python 3.5.2

import random

anagram = ['p','s','h','a','i','s','n','p','e'] # anagram of hapiness


with open('wordlist.txt') as in_file:
for line in in_file:
line = line.rstrip()
shuffledList = random.sample(anagram, len(anagram)) # randomise order
shuffledWord = ''.join(shuffledList) # make it a string
if shuffledWord == line:
print("YES") # (never happens)
break

除了实际产生解决方案的代码之外,我还在寻找某种巧妙的算法解决方案/线程技术/绝对任何东西,可以在 30 秒或更短的时间内找到 9 个字母的字谜的原始单词。这看起来确实很牵强,但我认为值得一试。有什么建议吗?

最佳答案

这是有关字谜的小线索:对它们进行排序后,它们是相同的列表。你可以尝试这样的事情:

>>> def is_anagram(word_one, word_two):
... return sorted(word_one) == sorted(word_two)
...
>>> print(is_anagram('ranagam', 'anagram'))
True

关于python - 循环遍历文件列表并针对一个 9 字母单词的每种排列测试每个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42457869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com