Skip to content

Instantly share code, notes, and snippets.

@mr1337357
Created October 21, 2015 22:21
Show Gist options
  • Save mr1337357/3f4360b5a238504d935c to your computer and use it in GitHub Desktop.
Save mr1337357/3f4360b5a238504d935c to your computer and use it in GitHub Desktop.
class board:
def __init__(self,size):
self.s=size
self.b=[0 for x in xrange(size*size)]
def get(self,x,y):
return self.b[x+self.s*y]
def set(self,x,y,v):
self.b[x+self.s*y]=v
def pr(self):
for x in xrange(self.s):
for y in xrange(self.s):
print self.get(x,y),
print ''
print ''
def copy(self):
b=board(self.s)
for x in xrange(self.s):
for y in xrange(self.s):
b.set(x,y,self.get(x,y))
return b
def verify(self):
for x in xrange(self.s):
fx=False
fy=False
for y in xrange(self.s):
if fx:
if self.get(x,y) == 'r':
return False
else:
if self.get(x,y) == 'r':
fx=True
if fy:
if self.get(y,x) == 'r':
return False
else:
if self.get(y,x) == 'r':
fy=True
return True
def solns(b,x):
for y in xrange(b.s):
c=b.copy()
c.set(x,y,'r')
if x == c.s-1:
if c.verify():
yield c
else:
if c.verify():
for s in solns(c,x+1):
yield s
from sys import argv
b = board(int(argv[1]))
soln = [s for s in solns(b,0)]
for sol in soln:
sol.pr()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment