拿Haskell缩水一下:
代码:
lucky [] x0 = [[]]
lucky (d:ds) x0 = [x1:xs | x1<-[x0+d, x0-d], xs<-(lucky ds x1), (x1>=0 && x1<=9)]
lucky_numbers ds = [ x1:xs | x1<-[1..9], xs<-lucky ds x1]
运行时:
Lucky> lucky_numbers [7]
[[1,8],[2,9],[7,0],[8,1],[9,2]]
map lucky_numbers (lucky_numbers [7])
[[[1,0,8],[2,1,9],[7,8,0],[8,9,1],[9,8,0]],[[2,0,9],[7,9,0]],[[1,8,8],[1,8,8],[2,9,9],[2,9,9],[7,0,0],[7,0,0],[8,1,1],[8,1,1],[9,2,2],[9,2,2]],[[1,9,8],[8,0,1],[9,1,2],[9,1,0]],[[9,0,2]]]
有bug,待查...