如何重新排列此函数以返回Haskell中的扩展列表

时间:2009-11-22 16:22:26

标签: function haskell list-comprehension

我正在项目euler做problem 68并在Haskell中提出以下代码以返回符合(给定)解决方案的数字列表:

lists = [n|n<- permutations [1..6] , ring n ] 
ring [a,b,c,d,e,f] = (length $ nub $ map sum [[d,c,b],[f,b,a],[e,a,c]]) == 1

这只返回一个列表,其中包含6个符合解决方案的数字。我不知道怎么做,是让它返回实际的解决方案,符合表格的列表:

[d,c,b],[f,b,a],[e,a,c]

如何让lists返回此格式的列表?

(PS:我将添加相应的函数以返回网站后来实际需要的内容)

1 个答案:

答案 0 :(得分:2)

只是

lists = [ [[d,c,b],[f,b,a],[e,a,c]] | n@[a,b,c,d,e,f] <- permutations [1..6], ring n ] 

或者为了生成字符串:

[ foldl (++) "" $ map show [d,c,b,f,b,a,e,a,c] | n@[a,b,c,d,e,f] <- permutations [1..6], ring n ]