Skip to content

Problem 7 (300pts): minimum_mewtations

实现 minimum_mewtations,这是一个差异函数,返回将 typed 单词转换为 source 单词所需的最少编辑操作数。

有三种编辑操作:

  1. typed 中添加一个字母。
  2. "kiten" 中添加 "t" 得到 "kitten"
  3. typed 中删除一个字母。
  4. "catts" 中删除 "t" 得到 "cats"
  5. typed 中用另一个字母替换一个字母。
  6. "baok" 中将 "a" 替换为 "o" 得到 "book"

每个编辑操作对两个单词的差异贡献 1。

>>> big_limit = 10
>>> minimum_mewtations("cats", "scat", big_limit)       # cats -> scats -> scat
2
>>> minimum_mewtations("purng", "purring", big_limit)   # purng -> purrng -> purring
2
>>> minimum_mewtations("ckiteus", "kittens", big_limit) # ckiteus -> kiteus -> kitteus -> kittens
3

我们已在 cats.py 中提供了一个实现模板。

提示: 这是一个具有三个递归调用的递归函数。 这些递归调用中的一个类似于 sphinx_fixes 中的递归调用,如果你用递归实现了 sphinx_fixes

你可以随意修改模板或完全删除它。

重要: 如果所需的编辑数大于 limit,则 minimum_mewtations 应返回大于 limit 的任何数字,并尽量减少计算量。

这些对 minimum_mewtations 的调用应该花费大致相同的时间来评估:

```python

limit = 2 minimum_mewtations("ckiteus", "kittens", limit) > limit True minimum_mewtations("ckiteusabcdefghijklm", "kittensnopqrstuvwxyz", limit) > limit True ```

在编写任何代码之前,解锁测试以验证你对问题的理解:

$ python ok -q 07 -u

解锁完成后,开始实现你的解决方案。 你可以用以下命令检查正确性:

$ python ok -q 07

再次尝试打字。 更正是否更准确?

$ python cats_gui.py