Problem 7 (300pts): minimum_mewtations
实现 minimum_mewtations,这是一个差异函数,返回将 typed 单词转换为 source 单词所需的最少编辑操作数。
有三种编辑操作:
- 在
typed中添加一个字母。 - 在
"kiten"中添加"t"得到"kitten"。 - 从
typed中删除一个字母。 - 从
"catts"中删除"t"得到"cats"。 - 在
typed中用另一个字母替换一个字母。 - 在
"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