Você está na página 1de 2

#!

/usr/bin/python
# -*- coding: utf-8

#fun��o pra calcular a brincadeira das n rainhas num tabuleiro nxn


def nrainhas(rainhas,filtro,cont,contm,n, linhas, colunas):

#la�o pra testar todas as possibilidades em cada rainha


for linha in linhas:
for coluna in colunas:
rainha2=(linha, coluna)
print rainha2
raw_input("")
a=1

#la�o que verifica a posi��o da rainha com a posi��o das rainhas


na
#lista "rainhas". se estiver na mesma linha, coluna ou diagonal,
#quebra raw_input("")o loop.
for rainha in rainhas:
dx=abs(rainha2[0]-rainha[0])
dy=abs(rainha2[1]-rainha[1])
if rainha[0]==rainha2[0] or rainha[1]==rainha2[1] or
dx==dy:
a=0
break
else:
a=1

#se a rainha passou por todo loop anterior...


if a==1:

#... inclui ela na lista "rainhas"


rainhas.append(rainha2)
print rainhas
raw_input("")

#a �ltima rainha � especial...


if cont==n:
filtro2=rainhas[:]
filtro2.sort()

#n�o quero que apare�a a mesma disposi��o de pe�as


#em seq��ncia diferente
if filtro2 in filtro:
cont-=1
rainhas=rainhas[:contm]
else:
print rainhas
filtro.append(filtro2)
cont-=1
rainhas=rainhas[:contm]

#as outras nem tanto!


elif cont<n:
cont+=1

#o que � Gnu? gnu n�o � Unix! ;)


nrainhas(rainhas,filtro,cont,contm,n,linhas,colunas)

#decrementando as coisas e cortando a listra pra "mexer as pe�as" de tr�s


pra frente
contm-=1
cont-=1
rainhas=rainhas[:contm]

#fim da fun��o!
##################################################################################
###########

n=input("quantas rainhas? ")


linhas=range(1,n+1)
colunas=range(1,n+1)
filtro=[]

#meu primeiro la�o sempre fica fora da fun��o... :(


for linha in linhas:
for coluna in colunas:
rainha2=(linha, coluna)
rainhas=[]
rainhas.append(rainha2)
cont=2
contm=-1
nrainhas(rainhas,filtro,cont,contm,n, linhas, colunas)

Você também pode gostar