|
SmtC: Show me the Code
Ole Peter Smith
Instituto de Matemática e Estatística
Universidade Federal de Goiás
http://www.olesmith.com.br
|
|
Existe pessoas presos na rua.
E pessoas livres na cadeia.
É uma questão de conceito.
Mahatma Gandhi.
|
Calculate Topology
-
Generate Topology Matrix of Lists/Sets of 1-9.
Python Listing: Initial.py.
class Sudoku_Topology_Initial(
):
def Topology_Initial(self):
initial=set()
for r in range(self.M):
initial.add(r+1)
#Starting topology
topology=[]
for r in range(self.M):
topology.append([])
for s in range(self.M):
element=self.S[r][s]
if (self.S[r][s]==0):
element=set(initial)
topology[r].append(element)
self.Topology_Eliminate(topology)
return topology
|
-
Loop over Given cells.
Python Listing: Eliminate.py.
def Topology_Eliminate(self,topology):
for r in range(self.M):
self.Topology_Eliminate_Rows(topology,r)
def Topology_Eliminate_Rows(self,topology,r):
for s in range(self.M):
self.Topology_Eliminate_Element(topology,r,s)
|
Python Listing: Eliminate.py.
class Sudoku_Topology_Eliminate(
):
##!
##! Eliminates elements from their shadow.
##!
def Topology_Eliminate(self,topology):
for r in range(self.M):
self.Topology_Eliminate_Rows(topology,r)
def Topology_Eliminate_Rows(self,topology,r):
for s in range(self.M):
self.Topology_Eliminate_Element(topology,r,s)
def Topology_Eliminate_Element(self,topology,r,s):
if (self.S[r][s]>0):
self.Topology_Eliminate_Element_In_Row(topology,r,s)
self.Topology_Eliminate_Element_In_Column(topology,r,s)
self.Topology_Eliminate_Element_In_Box(topology,r,s)
def Topology_Eliminate_Element_In_Row(self,topology,r,s):
value=self.S[r][s]
for s in range(self.M):
if (self.S[r][s]==0):
if (value in topology[r][s]):
topology[r][s].remove(value)
def Topology_Eliminate_Element_In_Column(self,topology,r,s):
value=self.S[r][s]
for r in range(self.M):
if (self.S[r][s]==0):
if (value in topology[r][s]):
topology[r][s].remove(value)
def Topology_Eliminate_Element_In_Box(self,topology,r,s):
value=self.S[r][s]
br=r//self.N
bs=s//self.N
r0=br*self.N
s0=bs*self.N
for rr in range(self.N):
r=r0+rr
for ss in range(self.N):
s=s0+ss
if (self.S[r][s]==0):
if (value in topology[r][s]):
topology[r][s].remove(value)
def Topology_Eliminate_Element_In_Bla(self,topology,r,s):
return
|
-
Eliminate in Cell Shadow.
Python Listing: Eliminate.py.
def Topology_Eliminate_Element(self,topology,r,s):
if (self.S[r][s]>0):
self.Topology_Eliminate_Element_In_Row(topology,r,s)
self.Topology_Eliminate_Element_In_Column(topology,r,s)
self.Topology_Eliminate_Element_In_Box(topology,r,s)
|
-
Eliminate in Cell Row.
Python Listing: Eliminate.py.
def Topology_Eliminate_Element_In_Row(self,topology,r,s):
value=self.S[r][s]
for s in range(self.M):
if (self.S[r][s]==0):
if (value in topology[r][s]):
topology[r][s].remove(value)
|
-
Eliminate in Cell Column.
Python Listing: Eliminate.py.
def Topology_Eliminate_Element_In_Column(self,topology,r,s):
value=self.S[r][s]
for r in range(self.M):
if (self.S[r][s]==0):
if (value in topology[r][s]):
topology[r][s].remove(value)
|
-
Eliminate in Cell Box.
Python Listing: Eliminate.py.
def Topology_Eliminate_Element_In_Box(self,topology,r,s):
value=self.S[r][s]
br=r//self.N
bs=s//self.N
r0=br*self.N
s0=bs*self.N
for rr in range(self.N):
r=r0+rr
for ss in range(self.N):
s=s0+ss
if (self.S[r][s]==0):
if (value in topology[r][s]):
topology[r][s].remove(value)
|
|
Messages:
0 secs.
|