我正在项目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:我将添加相应的函数以返回网站后来实际需要的内容)
答案 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 ]