如何使用Haskell实现单词接龙游戏的validGame校验功能
Haskell 单词接龙游戏合法性校验实现
功能规则
判断单词接龙游戏是否符合规则:上一个单词的最后一个字母必须作为下一个单词的首字母,输入字符串中单词之间用空格分隔,可使用
words函数辅助处理。
测试用例要求
以下测试用例的执行结果必须返回True:
validGame "apple table lo shoulder dog" == True validGame "converse veg ball tablecloth zsifaf fules" == True validGame "forest divide west tabortuz" == False validGame "sobbing guzsalyas sararany nyul leng" == False
实现代码
validGame :: String -> Bool validGame s = let wordList = words s in all (\(prev, next) -> last prev == head next) $ zip wordList (tail wordList)
实现说明
- 首先调用
words函数将输入的空格分隔字符串拆解为单词列表 - 通过
zip wordList (tail wordList)将相邻的单词两两配对,生成相邻单词对的列表 - 遍历所有相邻单词对,逐一校验前一个单词的末尾字符是否等于后一个单词的首字符
- 若所有单词对都满足规则则返回
True,存在任意一组不满足则返回False - 边界场景兼容:输入为空、仅输入一个单词时,默认返回
True
内容的提问来源于stack exchange,提问作者hello16
相关产品推荐
相关产品推荐

