我正在努力解决4clojure问题集,并发现自己陷入第82个问题,处理word chains。真的可以使用另一套眼睛 - 我在这里引用了大部分问题,但我的问题是关于其中一个被列为无效的链条。
单词链由一组排序的单词组成,这样每个单词在它之前和之后的单词之间仅相差一个字母。单字母差异可以是插入,删除或替换。这是一个示例单词链:
cat -> cot -> coat -> oat -> hat -> hot -> hog -> dog
编写一个带有一系列单词的函数,如果它们可以被排列成一个连续的单词链,则返回true,如果不能,则返回false。
我编写了一个函数,它似乎正确地验证了所有选项,除了第三个:
#{"to" "top" "stop" "tops" "toss"}
这被列为无效的单词链,但我的程序验证为正确。我也可以自己构建链条:
to -> top -> stop -> toss -> tops
我错过了什么?我试图理解其他人的答案,但这怎么不是一个有效的链开始? (我很高兴发布我的解决方案,但我的问题主要是关于这个链的有效性。)感谢您的帮助!
答案 0 :(得分:1)
从“停止”移动到“折腾”需要不止一次更改。 它不能是插入或删除,因为两个单词的长度相同,因此必须是替换。
但将“停止”转变为“投掷”需要不少于4次替换。 这使得整个链无效。