未考虑是否越界的暴力搜索
let all3 n = if n < 1 then [] else [(p0, p1, p2, p3)|let ps = p n, let l = length ps, i<-[0..l-4], j<-[i+1..l-3], k<-[j+1..l-2], m<-[k+1..l-1], let p0=ps!!i, let p1=ps!!j, let p2=ps!!k, let p3=ps!!m, orth p0 p1 p2, orth p0 p1 p3, orth p0 p2 p3]
Prelude Data.Array Data.List> all3 2
[((0,0,0),(0,0,1),(0,1,0),(1,0,0)),((0,0,0),(0,0,1),(0,1,0),(2,0,0)),((0,0,0),(0,0,1),(0,2,0),(1,0,0)),((0,0,0),(0,0,1),(0,2,0),(2,0,0)),((0,0,0),(0,0,2),(0,1,0),(1,0,0)),((0,0,0),(0,0,2),(0,1,0),(2,0,0)),((0,0,0),(0,0,2),(0,2,0),(1,0,0)),((0,0,0),(0,0,2),(0,2,0),(2,0,0)),((0,0,1),(0,0,2),(0,1,1),(1,0,1)),((0,0,1),(0,0,2),(0,1,1),(2,0,1)),((0,0,1),(0,0,2),(0,2,1),(1,0,1)),((0,0,1),(0,0,2),(0,2,1),(2,0,1)),((0,0,1),(0,1,0),(0,1,2),(1,0,1)),((0,0,1),(0,1,0),(0,1,2),(2,0,1)),((0,0,1),(0,1,1),(1,0,0),(1,0,2)),((0,0,1),(0,2,1),(1,0,0),(1,0,2)),((0,1,0),(0,1,1),(0,2,0),(1,1,0)),((0,1,0),(0,1,1),(0,2,0),(2,1,0)),((0,1,0),(0,1,1),(1,0,0),(1,2,0)),((0,1,0),(0,1,2),(0,2,0),(1,1,0)),((0,1,0),(0,1,2),(0,2,0),(2,1,0)),((0,1,0),(0,1,2),(1,0,0),(1,2,0)),((0,1,1),(0,1,2),(0,2,1),(1,1,1)),((0,1,1),(0,1,2),(0,2,1),(2,1,1)),((0,1,1),(0,1,2),(1,0,1),(1,2,1)),((0,1,1),(0,2,0),(0,2,2),(1,1,1)),((0,1,1),(0,2,0),(0,2,2),(2,1,1)),((0,1,1),(0,2,0),(1,0,0),(2,2,2)),((0,1,1),(0,2,0),(1,2,2),(2,0,0)),((0,1,1),(0,2,1),(1,1,0),(1,1,2)),((0,1,1),(0,2,2),(1,0,2),(2,2,0)),((0,1,1),(0,2,2),(1,2,0),(2,0,2)),((1,0,0),(1,0,1),(1,1,0),(2,0,0)),((1,0,0),(1,0,1),(1,2,0),(2,0,0)),((1,0,0),(1,0,2),(1,1,0),(2,0,0)),((1,0,0),(1,0,2),(1,2,0),(2,0,0)),((1,0,1),(1,0,2),(1,1,1),(2,0,1)),((1,0,1),(1,0,2),(1,2,1),(2,0,1)),((1,0,1),(1,1,0),(1,1,2),(2,0,1)),((1,0,1),(1,1,1),(2,0,0),(2,0,2)),((1,0,1),(1,2,1),(2,0,0),(2,0,2)),((1,1,0),(1,1,1),(1,2,0),(2,1,0)),((1,1,0),(1,1,1),(2,0,0),(2,2,0)),((1,1,0),(1,1,2),(1,2,0),(2,1,0)),((1,1,0),(1,1,2),(2,0,0),(2,2,0)),((1,1,1),(1,1,2),(1,2,1),(2,1,1)),((1,1,1),(1,1,2),(2,0,1),(2,2,1)),((1,1,1),(1,2,0),(1,2,2),(2,1,1)),((1,1,1),(1,2,1),(2,1,0),(2,1,2))]
Prelude Data.Array Data.List> length (all3 2)
49
现在我不确定,这个是否无遗漏,无重复 |