我在这个单词链验证器中缺少什么? (4clojure)

时间:2016-02-14 20:34:31

标签: clojure

我正在努力解决4clojure问题集,并发现自己陷入第82个问题,处理word chains。真的可以使用另一套眼睛 - 我在这里引用了大部分问题,但我的问题是关于其中一个被列为无效的链条。

  

单词链由一组排序的单词组成,这样每个单词在它之前和之后的单词之间仅相差一个字母。单字母差异可以是插入,删除或替换。这是一个示例单词链:

cat -> cot -> coat -> oat -> hat -> hot -> hog -> dog
  

编写一个带有一系列单词的函数,如果它们可以被排列成一个连续的单词链,则返回true,如果不能,则返回false。

我编写了一个函数,它似乎正确地验证了所有选项,除了第三个:

#{"to" "top" "stop" "tops" "toss"}

这被列为无效的单词链,但我的程序验证为正确。我也可以自己构建链条:

to -> top -> stop -> toss -> tops

我错过了什么?我试图理解其他人的答案,但这怎么不是一个有效的链开始? (我很高兴发布我的解决方案,但我的问题主要是关于这个链的有效性。)感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

从“停止”移动到“折腾”需要不止一次更改。 它不能是插入或删除,因为两个单词的长度相同,因此必须是替换。

但将“停止”转变为“投掷”需要不少于4次替换。 这使得整个链无效。