1

我在项目 euler 做问题 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:稍后我会添加适当的函数来返回站点实际想要的内容)

4

1 回答 1

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 ] 
于 2009-11-22T16:34:17.137 回答