Хочу написать функцию, которая бы возвратила все n-значные числа (можно в виде списка цифр), который состоят из нечётных цифр и соседние цифры отличаются на два.
Пока я написал так
-- первая цифра
let ds=[1,3,5,7,9]
-- следующая цифра
let nexts 1 = [3]; nexts 9 = [7]; nexts n = [n-2,n+2]
-- список вохможных 5-значных чисел
let as = [[a,b,c,d,e]|a<-ds,b<-nexts a, c<-nexts b,d<-nexts c,e<- nexts d]
Наверное как-то через монады можно. Я совсем ещё новичок и был бы признателен за красивое решение.