I am a Haskell newbie. So, I would like to ask a simple question.
I have to find with help of backtracking the (unique) number containing 9 numbers with the following characteristics:
The numbers 1/9 appear exactly once.
The first k numbers of n are divisible by k for k runs from 1/9
Example
n = 123456789
1 (the first number of n) should be divisible by 1. true!
2 (the first 2 numbers of n) should be divisible by 2. true!
3 (the first 3 numbers of n) should be divisible by 3. true!
4 (the first 4 numbers of n) should be divisible by 4. false!
So, 123456789 is not the desired number.
uniekGetal :: [Int]
uniekGetal = [val9 |
x1 <- [1..9],
let val = x1,
x2 <- [x| x <- [1..9], x /= x1],
let val2 = val * 10 + x2,
mod val2 2 == 0,
x3 <- [x| x <- [1..9], x /= x1, x /= x2],
let val3 = val2 * 10 + x3,
mod val3 3 == 0,
x4 <- [x| x <- [1..9], x /= x1, x /= x2, x /= x3],
let val4 = val3 * 10 + x4,
mod val4 4 == 0,
x5 <- [x| x <- [1..9], x /= x1, x /= x2, x /= x3, x /= x4],
let val5 = val4 * 10 + x5,
mod val5 5 == 0,
x6 <- [x| x <- [1..9], x /= x1, x /= x2, x /= x3, x /= x4, x /= x5],
let val6 = val5 * 10 + x6,
mod val6 6 == 0,
x7 <- [x| x <- [1..9], x /= x1, x /= x2, x /= x3, x /= x4, x /= x5, x /= x6],
let val7 = val6 * 10 + x7,
mod val7 7 == 0,
x8 <- [x| x <- [1..9], x /= x1, x /= x2, x /= x3, x /= x4, x /= x5, x /= x6, x /= x7],
let val8 = val7 * 10 + x8,
mod val8 8 == 0,
x9 <- [x| x <- [1..9], x /= x1, x /= x2, x /= x3, x /= x4, x /= x5, x /= x6, x /= x7, x /= x8],
let val9 = val8 * 10 + x9,
mod val9 9 == 0]
this was the solution to my problem.