"[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:

>Background:
>The problem I'm trying to solve is.
>There is a 5x5 grid.
>You need to fit 5 queens on the board such that when placed there are
>three spots left that are not threatened by the queen.

I know this wasn't a contest, but here's my solution.  This finds 8
solutions, which are all reflections and rotations of each other:

rows = (
  (  1,  2,  3,  4,  5 ),
  (  6,  7,  8,  9, 10 ),
  ( 11, 12, 13, 14, 15 ),
  ( 16, 17, 18, 19, 20 ),
  ( 21, 22, 23, 24, 25 ),
  ( 1, 6, 11, 16, 21 ),
  ( 2, 7, 12, 17, 22 ),
  ( 3, 8, 13, 18, 23 ),
  ( 4, 9, 14, 19, 24 ),
  ( 5, 10, 15, 20, 25 ),
  ( 16, 22 ),
  ( 11, 17, 23 ),
  ( 6, 12, 18, 24 ),
  ( 1, 7, 13, 19, 25 ),
  ( 2, 8, 14, 20 ),
  ( 3, 9, 15 ),
  ( 4, 10 ),
  ( 2, 6 ),
  ( 3, 7, 11 ),
  ( 4, 8, 12, 16 ),
  ( 5, 9, 13, 17, 21 ),
  ( 10, 14, 18, 22 ),
  ( 15, 19, 23 ),
  ( 20, 24 )
)

zeros = [ 0 ] * 25

def printme( cells ):
    for i,j in enumerate(cells):
        print "%2d" % j,
        if i % 5 == 4:
            print

def check( queens ):
    cells = zeros[:]
    for q in queens:
        for row in rows:
            if q in row:
                for x in row:
                    cells[x-1] = 1
    nils = len( [1 for k in cells if not k] )
    if nils >= 3:
        for i in queens:
            cells[i-1] = 9
        print queens
        printme( cells )

for q1 in range(25):
    for q2 in range(q1+1,25):
        for q3 in range(q2+1,25):
            for q4 in range(q3+1,25):
                for q5 in range(q4+1,25):
                    check( [q1+1,q2+1,q3+1,q4+1,q5+1] )
-- 
- Tim Roberts, [EMAIL PROTECTED]
  Providenza & Boekelheide, Inc.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to