[ create a new paste ] login | about

Link: http://codepad.org/pkZ4sLPz    [ raw code | output | fork ]

Python, pasted on Nov 6:
def solve(n, st, f):
    size = len(st)
    if n == size:
        f(tuple(st))
        return
    for x in xrange(size):
        for y_ in xrange(n):
            x_ = st[y_] - x
            if not x_ or abs(x_) == n - y_:
                break
        else:
            st[n] = x
            solve(n+1, st, f)

def queens(size, f):
    solve(0, [0]*size, f)

def print_(p):
    for y, x in enumerate(p):
        print (x+1, y+1),
    print

queens(8, print_)

def test():
    result = []
    queens(8, result.append)

from time import time
t = time()
for _ in xrange(100):
    test()
t = time() - t
print t*1000, '[ms]'


Output:
(1, 1) (5, 2) (8, 3) (6, 4) (3, 5) (7, 6) (2, 7) (4, 8)
(1, 1) (6, 2) (8, 3) (3, 4) (7, 5) (4, 6) (2, 7) (5, 8)
(1, 1) (7, 2) (4, 3) (6, 4) (8, 5) (2, 6) (5, 7) (3, 8)
(1, 1) (7, 2) (5, 3) (8, 4) (2, 5) (4, 6) (6, 7) (3, 8)
(2, 1) (4, 2) (6, 3) (8, 4) (3, 5) (1, 6) (7, 7) (5, 8)
(2, 1) (5, 2) (7, 3) (1, 4) (3, 5) (8, 6) (6, 7) (4, 8)
(2, 1) (5, 2) (7, 3) (4, 4) (1, 5) (8, 6) (6, 7) (3, 8)
(2, 1) (6, 2) (1, 3) (7, 4) (4, 5) (8, 6) (3, 7) (5, 8)
(2, 1) (6, 2) (8, 3) (3, 4) (1, 5) (4, 6) (7, 7) (5, 8)
(2, 1) (7, 2) (3, 3) (6, 4) (8, 5) (5, 6) (1, 7) (4, 8)
(2, 1) (7, 2) (5, 3) (8, 4) (1, 5) (4, 6) (6, 7) (3, 8)
(2, 1) (8, 2) (6, 3) (1, 4) (3, 5) (5, 6) (7, 7) (4, 8)
(3, 1) (1, 2) (7, 3) (5, 4) (8, 5) (2, 6) (4, 7) (6, 8)
(3, 1) (5, 2) (2, 3) (8, 4) (1, 5) (7, 6) (4, 7) (6, 8)
(3, 1) (5, 2) (2, 3) (8, 4) (6, 5) (4, 6) (7, 7) (1, 8)
(3, 1) (5, 2) (7, 3) (1, 4) (4, 5) (2, 6) (8, 7) (6, 8)
(3, 1) (5, 2) (8, 3) (4, 4) (1, 5) (7, 6) (2, 7) (6, 8)
(3, 1) (6, 2) (2, 3) (5, 4) (8, 5) (1, 6) (7, 7) (4, 8)
(3, 1) (6, 2) (2, 3) (7, 4) (1, 5) (4, 6) (8, 7) (5, 8)
(3, 1) (6, 2) (2, 3) (7, 4) (5, 5) (1, 6) (8, 7) (4, 8)
(3, 1) (6, 2) (4, 3) (1, 4) (8, 5) (5, 6) (7, 7) (2, 8)
(3, 1) (6, 2) (4, 3) (2, 4) (8, 5) (5, 6) (7, 7) (1, 8)
(3, 1) (6, 2) (8, 3) (1, 4) (4, 5) (7, 6) (5, 7) (2, 8)
(3, 1) (6, 2) (8, 3) (1, 4) (5, 5) (7, 6) (2, 7) (4, 8)
(3, 1) (6, 2) (8, 3) (2, 4) (4, 5) (1, 6) (7, 7) (5, 8)
(3, 1) (7, 2) (2, 3) (8, 4) (5, 5) (1, 6) (4, 7) (6, 8)
(3, 1) (7, 2) (2, 3) (8, 4) (6, 5) (4, 6) (1, 7) (5, 8)
(3, 1) (8, 2) (4, 3) (7, 4) (1, 5) (6, 6) (2, 7) (5, 8)
(4, 1) (1, 2) (5, 3) (8, 4) (2, 5) (7, 6) (3, 7) (6, 8)
(4, 1) (1, 2) (5, 3) (8, 4) (6, 5) (3, 6) (7, 7) (2, 8)
(4, 1) (2, 2) (5, 3) (8, 4) (6, 5) (1, 6) (3, 7) (7, 8)
(4, 1) (2, 2) (7, 3) (3, 4) (6, 5) (8, 6) (1, 7) (5, 8)
(4, 1) (2, 2) (7, 3) (3, 4) (6, 5) (8, 6) (5, 7) (1, 8)
(4, 1) (2, 2) (7, 3) (5, 4) (1, 5) (8, 6) (6, 7) (3, 8)
(4, 1) (2, 2) (8, 3) (5, 4) (7, 5) (1, 6) (3, 7) (6, 8)
(4, 1) (2, 2) (8, 3) (6, 4) (1, 5) (3, 6) (5, 7) (7, 8)
(4, 1) (6, 2) (1, 3) (5, 4) (2, 5) (8, 6) (3, 7) (7, 8)
(4, 1) (6, 2) (8, 3) (2, 4) (7, 5) (1, 6) (3, 7) (5, 8)
(4, 1) (6, 2) (8, 3) (3, 4) (1, 5) (7, 6) (5, 7) (2, 8)
(4, 1) (7, 2) (1, 3) (8, 4) (5, 5) (2, 6) (6, 7) (3, 8)
(4, 1) (7, 2) (3, 3) (8, 4) (2, 5) (5, 6) (1, 7) (6, 8)
(4, 1) (7, 2) (5, 3) (2, 4) (6, 5) (1, 6) (3, 7) (8, 8)
(4, 1) (7, 2) (5, 3) (3, 4) (1, 5) (6, 6) (8, 7) (2, 8)
(4, 1) (8, 2) (1, 3) (3, 4) (6, 5) (2, 6) (7, 7) (5, 8)
(4, 1) (8, 2) (1, 3) (5, 4) (7, 5) (2, 6) (6, 7) (3, 8)
(4, 1) (8, 2) (5, 3) (3, 4) (1, 5) (7, 6) (2, 7) (6, 8)
(5, 1) (1, 2) (4, 3) (6, 4) (8, 5) (2, 6) (7, 7) (3, 8)
(5, 1) (1, 2) (8, 3) (4, 4) (2, 5) (7, 6) (3, 7) (6, 8)
(5, 1) (1, 2) (8, 3) (6, 4) (3, 5) (7, 6) (2, 7) (4, 8)
(5, 1) (2, 2) (4, 3) (6, 4) (8, 5) (3, 6) (1, 7) (7, 8)
(5, 1) (2, 2) (4, 3) (7, 4) (3, 5) (8, 6) (6, 7) (1, 8)
(5, 1) (2, 2) (6, 3) (1, 4) (7, 5) (4, 6) (8, 7) (3, 8)
(5, 1) (2, 2) (8, 3) (1, 4) (4, 5) (7, 6) (3, 7) (6, 8)
(5, 1) (3, 2) (1, 3) (6, 4) (8, 5) (2, 6) (4, 7) (7, 8)
(5, 1) (3, 2) (1, 3) (7, 4) (2, 5) (8, 6) (6, 7) (4, 8)
(5, 1) (3, 2) (8, 3) (4, 4) (7, 5) (1, 6) (6, 7) (2, 8)
(5, 1) (7, 2) (1, 3) (3, 4) (8, 5) (6, 6) (4, 7) (2, 8)
(5, 1) (7, 2) (1, 3) (4, 4) (2, 5) (8, 6) (6, 7) (3, 8)
(5, 1) (7, 2) (2, 3) (4, 4) (8, 5) (1, 6) (3, 7) (6, 8)
(5, 1) (7, 2) (2, 3) (6, 4) (3, 5) (1, 6) (4, 7) (8, 8)
(5, 1) (7, 2) (2, 3) (6, 4) (3, 5) (1, 6) (8, 7) (4, 8)
(5, 1) (7, 2) (4, 3) (1, 4) (3, 5) (8, 6) (6, 7) (2, 8)
(5, 1) (8, 2) (4, 3) (1, 4) (3, 5) (6, 6) (2, 7) (7, 8)
(5, 1) (8, 2) (4, 3) (1, 4) (7, 5) (2, 6) (6, 7) (3, 8)
(6, 1) (1, 2) (5, 3) (2, 4) (8, 5) (3, 6) (7, 7) (4, 8)
(6, 1) (2, 2) (7, 3) (1, 4) (3, 5) (5, 6) (8, 7) (4, 8)
(6, 1) (2, 2) (7, 3) (1, 4) (4, 5) (8, 6) (5, 7) (3, 8)
(6, 1) (3, 2) (1, 3) (7, 4) (5, 5) (8, 6) (2, 7) (4, 8)
(6, 1) (3, 2) (1, 3) (8, 4) (4, 5) (2, 6) (7, 7) (5, 8)
(6, 1) (3, 2) (1, 3) (8, 4) (5, 5) (2, 6) (4, 7) (7, 8)
(6, 1) (3, 2) (5, 3) (7, 4) (1, 5) (4, 6) (2, 7) (8, 8)
(6, 1) (3, 2) (5, 3) (8, 4) (1, 5) (4, 6) (2, 7) (7, 8)
(6, 1) (3, 2) (7, 3) (2, 4) (4, 5) (8, 6) (1, 7) (5, 8)
(6, 1) (3, 2) (7, 3) (2, 4) (8, 5) (5, 6) (1, 7) (4, 8)
(6, 1) (3, 2) (7, 3) (4, 4) (1, 5) (8, 6) (2, 7) (5, 8)
(6, 1) (4, 2) (1, 3) (5, 4) (8, 5) (2, 6) (7, 7) (3, 8)
(6, 1) (4, 2) (2, 3) (8, 4) (5, 5) (7, 6) (1, 7) (3, 8)
(6, 1) (4, 2) (7, 3) (1, 4) (3, 5) (5, 6) (2, 7) (8, 8)
(6, 1) (4, 2) (7, 3) (1, 4) (8, 5) (2, 6) (5, 7) (3, 8)
(6, 1) (8, 2) (2, 3) (4, 4) (1, 5) (7, 6) (5, 7) (3, 8)
(7, 1) (1, 2) (3, 3) (8, 4) (6, 5) (4, 6) (2, 7) (5, 8)
(7, 1) (2, 2) (4, 3) (1, 4) (8, 5) (5, 6) (3, 7) (6, 8)
(7, 1) (2, 2) (6, 3) (3, 4) (1, 5) (4, 6) (8, 7) (5, 8)
(7, 1) (3, 2) (1, 3) (6, 4) (8, 5) (5, 6) (2, 7) (4, 8)
(7, 1) (3, 2) (8, 3) (2, 4) (5, 5) (1, 6) (6, 7) (4, 8)
(7, 1) (4, 2) (2, 3) (5, 4) (8, 5) (1, 6) (3, 7) (6, 8)
(7, 1) (4, 2) (2, 3) (8, 4) (6, 5) (1, 6) (3, 7) (5, 8)
(7, 1) (5, 2) (3, 3) (1, 4) (6, 5) (8, 6) (2, 7) (4, 8)
(8, 1) (2, 2) (4, 3) (1, 4) (7, 5) (5, 6) (3, 7) (6, 8)
(8, 1) (2, 2) (5, 3) (3, 4) (1, 5) (7, 6) (4, 7) (6, 8)
(8, 1) (3, 2) (1, 3) (6, 4) (2, 5) (5, 6) (7, 7) (4, 8)
(8, 1) (4, 2) (1, 3) (3, 4) (6, 5) (2, 6) (7, 7) (5, 8)
5430.46689034 [ms]


Create a new paste based on this one


Comments: