/////////////////////////////////////////////////////////////////////////////// // Not a square /////////////////////////////////////////////////////////////////////////////// // Enigma 1555 Richard England, New Scientist magazine, July 25, 2009 /////////////////////////////////////////////////////////////////////////////// // // Fill each of the 12 cells // // +--+--+ // | | | // +--+--+--+--+ // | | | | | // +--+--+--+--+ // | | | | | // +--+--+--+--+ // | | | // +--+--+ // // with a digit so that the two four-digit numbers that you can read down, the // two two-digit numbers that you can read down at the sides and the two-digit // number that you can read across at the bottom are all different perfect // squares (with no leading zeros). Only the two-digit number that you can read // across at the top is not a perfect square. // What is that two-digit number? // /////////////////////////////////////////////////////////////////////////////// // // Solve the problem by running the query: // // all Enigma_1555(x) // /////////////////////////////////////////////////////////////////////////////// // // Results: // // x = 71 // ___ Solution: 1 ___ [00:00:00] __ [Backtracks: 429225] ____ // // Number of solutions: 1 Number of backtracks: 571935 // Elapsed time: 00:00:00 // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // // Use the following notation for the 12 unknown digits: // // +---+---+ // | a | b | // +---+---+---+---+ // | c | d | e | f | // +---+---+---+---+ // | g | h | i | j | // +---+---+---+---+ // | k | l | // +---+---+ // // pred Enigma_1555(x:>L) iff // Array of twelve digits, each ranging from 0..9 arr ::[0..]->L[0..9] & arr = [a,b,c,d,e,f,g,h,i,j,k,l] & // No leading zeros for any of the numbers down or across... a <> 0 & c <> 0 & g <> 0 & b <> 0 & f <> 0 & k <> 0 & RtlIsPowerOf2(c*1000+d*100+e*10+f) & // First four-digit number across RtlIsPowerOf2(g*1000+h*100+i*10+j) & // Second four-digit number across RtlIsPowerOf2(c*10+g) & // Two-digit number down at the left side RtlIsPowerOf2(f*10+j) & // Two-digit number down at the right side RtlIsPowerOf2(k*10+l) & // Two-digit number at the bottom RtlIsPowerOf2(a*1000+d*100+h*10+k) & // First four-digit number down RtlIsPowerOf2(b*1000+e*100+i*10+l) & // Second four-digit number down x = a*10+b & // The top two digit number ~RtlIsPowerOf2(x)
This page was created by F1toHTML