python - 字谜解决错误python

标签 python algorithm io anagram equation-solving

我写了一个 anagram 解决算法,它不起作用。

for word in wordlist: #Checking for equal length
    if sorted(word.replace("\n", "")) == sorted(anagram):
        possible.append(word)

我需要使用 len(word) - 1 来去掉\n。

最佳答案

(1) 我不明白你第一个循环中“len(word)-1”中的“-1”。

(2) 你的第二个循环有几个问题:

它不会检查字母是否相同,它会检查字谜中的每个字母是否在单词中。您没有使用计数信息,因此无法区分 bok 和 book。您还从迭代的序列中移除,这会导致意外行为。

就我而言,我会简单地使用

sorted_anagram = sorted(anagram)
possibles = [word for word in wordlist if sorted(word) == sorted_anagram]

而不是显式的 for 循环。

请注意,对单词进行排序是一种规范化过程——它可以确保任何两个互为变位词的单词都采用相同的格式。确定两个事物是否是变位词的另一种方法是确保字母数相同:

>>> from collections import Counter
>>> Counter('book')
Counter({'o': 2, 'k': 1, 'b': 1})
>>> Counter('obko')
Counter({'o': 2, 'k': 1, 'b': 1})
>>> Counter('bok')
Counter({'k': 1, 'b': 1, 'o': 1})
>>> 
>>> Counter('book') == Counter('boko')
True
>>> Counter('book') == Counter('bok')
False

关于python - 字谜解决错误python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864451/

相关文章:

python - 模型预测的置信区间

python - 在 O(logn) 中从 python heapq 中删除

c# - (高斯)滤波后归一化图像

java - 在Java中,创建支持不同分辨率/显示模式的应用程序

memory - Rust `String` 类型/`read_line` 函数如何在没有明确告知的情况下知道需要多少内存?

c# - 在文件/目录上设置时间戳非常慢

Python - 如何获取特定 div 的样式属性总数

python - 比较两种产品大数据集

c - 在不生成重复项的情况下查找字符串的所有唯一排列

MySQL : splitting the processing of a particular table between different nodes