Home More Samples
```
///////////////////////////////////////////////////////////////////////////////
// All our days
///////////////////////////////////////////////////////////////////////////////
// Enigma 1575 Adrian Somerfield, New Scientist magazine, December 12, 2009.
///////////////////////////////////////////////////////////////////////////////
//
// I have written the days of the week with their ordinal numbers as shown:
//
//  MO TU  W TH  F SA SU
//   1  2  3  4  5  6  7
//
// Letters being consistently replaced by non-zero digits, each day is
// divisible by its own ordinal number (and by no higher digit).
// Please send in the FAMOUS number.
//
///////////////////////////////////////////////////////////////////////////////
//
// Solve the problem by running the query:
//
//          all AllOurDays(famous)
//
///////////////////////////////////////////////////////////////////////////////
//
// Results:
//
// famous = 528941
// ___ Solution: 1 ___ [00:00:00] __ [Backtracks: 268] ____
//
// Number of solutions: 1   Number of backtracks: 3504
// Elapsed time: 00:00:00
//
///////////////////////////////////////////////////////////////////////////////

local Digit = L[1..9]

pred AllOurDays(famous::L) iff
m::Digit & o::Digit & t::Digit & u::Digit & w::Digit &
h::Digit & f::Digit & s::Digit & a::Digit &
_AllDifferent(m,o,t,u,w,h,f,s,a) &
day1 = 10*m + o & day1 mod 1 = 0 & NotDivisible(day1,2) &
day2 = 10*t + u & day2 mod 2 = 0 & NotDivisible(day2,3) &
day3 =        w & day3 mod 3 = 0 & NotDivisible(day3,4) &
day4 = 10*t + h & day4 mod 4 = 0 & NotDivisible(day4,5) &
day5 =        f & day5 mod 5 = 0 & NotDivisible(day5,6) &
day6 = 10*s + a & day6 mod 6 = 0 & NotDivisible(day6,7) &
day7 = 10*s + u & day7 mod 7 = 0 & NotDivisible(day7,8) &

famous = f*100000 + a*10000+m*1000+o*100+u*10 +s

local pred NotDivisible(day::L,d:<L) iff
if d <= 9 then
day mod d <> 0 & NotDivisible(day,d+1)
end

```