【发布时间】:2018-06-22 20:09:21
【问题描述】:
输入是单词列表。如果一个单词的最后一个字母与另一个单词的第一个字母相同,那么我们连接它们并输出一个列表列表,其中包含所有可能的连接。
我将输入转换为邻接列表。但这会从输入中丢失一些元素。
例如:
convert(["apple","elephant","eraser", "tower","rank"])
会给
[["elephant", "eraser"], ["tower"], ["rank"], ["rank"], []]
“apple”连接到“elephant”和“eraser”。但是结果中丢失了“苹果”。 如何修复我的代码以在结果中包含元素?
convert :: [String] -> [[String]]
convert [] = []
convert [x] = [[]]
convert (x:xs) = [u | u <- xs, last x == head u] : convert (head xs : tail xs)
【问题讨论】:
-
喜欢this?
-
是的。但是有很多案例。我不确定如何使用它。
-
: convert (head xs : tail xs)与: convert xs相同 -
我不明白你对函数应该做什么的描述。你为什么不发布你期望的结果?还有,旁注:为什么这个函数叫
convert?这是一个可怕的名字,转换应该始终是本质上保留价值的东西,只是以另一种方式表示它。 -
你的问题标题和实际问题有什么关系?您希望字典对您有什么帮助?
标签: haskell