More Samples

{
Several variations of the same problem: replace all letters
with numbers so the equation is true.

These problems are solved by asking a query

    all Send(send,more,money)
    all CrossRoads(cross,roads,danger)
    all Donald(donald,gerald,robert)

Note: It can take several minutes to calculate for some of the queries,
depending on the CPU speed.

}


Digit = L[0..9]

{
SEND + MORE = MONEY

Solution:
  
  send =  9567
  more =  1085
 money = 10652

backtracks: 7(solution)/24(total)
}

pred Send(send::L,more::L,money::L) iff
    send + more = money &
    a::[0..7]->>Digit & a = [s,e,n,d,m,o,r,y] &
    m <> 0 & s <> 0 &               {no leading zeros}
    send =            1000*s + 100*e + 10*n + d &
    more =            1000*m + 100*o + 10*r + e &
    money = 10000*m + 1000*o + 100*n + 10*e + y 

{
CROSS + ROADS = DANGER

Solution:

   cross =  96233
   roads =  62513
  danger = 158746

backtracks: 178776(solution)/223059(total) 

}

pred CrossRoads(cross::L, roads::L, danger::L) iff
    cross + roads = danger &
    aa::[0..]->>Digit & aa = [c,r,o,s,a,d,n,g,e] &
    r <> 0 & s <> 0 & c <> 0 &      {no leading zeros}
    cross =             10000*c + 1000*r + 100*o + 10*s + s &
    roads =             10000*r + 1000*o + 100*a + 10*d + s &
    danger = 100000*d + 10000*a + 1000*n + 100*g + 10*e + r 

{
DONALD + GERALD = ROBERT

Solution:
           
  donald =  526485
  gerald =  197485
  robert =  723970

backtracks: 574502(solution)/900554(total) 
}

pred Donald(donald::L,gerald::L,robert::L) iff
    donald + gerald = robert &
    aa::[0..9]->>Digit & aa = [l,a,b,n,e,o,r,g,d,t] &
    d <> 0 & g <> 0 & r <> 0 &      {no leading zeros}
    donald = 100000*d + 10000*o + 1000*n + 100*a + 10*l + d &
    gerald = 100000*g + 10000*e + 1000*r + 100*a + 10*l + d &
    robert = 100000*r + 10000*o + 1000*b + 100*e + 10*r + t
                                                                  






This page was created by F1toHTML