em chào tất cả mọi người , em là newbie đang học về python, e có thắc mắc về phần code của e , e tạo 1 ma trận 3*3 vs các số cho trc , sao cho tổng dọc ngang chéo mỗi cái là 15, vấn đề là e thử phần code
của e không chạy , nhưng cũng không báo lỗi ,e đoán là sai trong phần suy nghĩ, e đã ngồi thử nhưng không tìm ra được, mong các cao nhân chỉ giáo
class map(object):
def __init__(self):
self.liste=[[0,0,0],[0,0,0],[0,0,0]]
self.con=True##conditions
self.number=[1,2,3,4,5,6,7,8,9]
def add(self,n,row,column):column
self.liste[row][column]=n
def remove(self,row,column):
self.liste[row][column]=0
def wert(self,row,column):
return self.liste[row][column]
def isvoll(self):
for i in range(3):
for j in range(3):
if self.liste[i][j]==0:
return False
return True
def Result2(self):
if self.isvoll()==True:##when matrix is full
if self.istrue()==True:##whenn matrix í right
print(self.__str__())
else:
for i in range(3):##detele all element in number, which is already in the matrix(xoa phan tu trong list number(so 1-9) tu , cai da co trong ma tran )
for j in range(3):
if self.liste[i][j] in self.number:
self.number.remove(self.liste[i][j])
for i in range(3):## backtracking and gives all situation
for j in range(3):
for a in self.number:
if self.liste[i][j]==0:
self.add(a,i,j)
self.Result2()
self.add(0,i,j)
def istrue(self):
for i in range(len(self.liste)):
if(self.liste[i][0]+self.liste[i][1]+self.liste[i][2]==15):##sum row=15(hang)
self.con=True
else:
return False
if(self.liste[0][i]+self.liste[1][i]+self.liste[2][i]==15):##sum column=15(cot)
self.con=True
else:
return False
if(self.liste[0][0]+self.liste[1][1]+self.liste[2][2]==15):##sum von position(00,11,22)(cheo)
self.con=True
else:
return False
if(self.liste[0][2]+self.liste[1][1]+self.liste[2][0]==15):##sum von position(20,11,02)(cheo)
self.con=True
else:
return False
return self.con
def __str__(self):
result=""
for i in range(len(self.liste)):
result+="\n"
for j in range(len(self.liste)):
result+=str(self.liste[i][j])+" "
return result
x=map()
x.add(4,0,0)
x.add(5,1,1)
x.add(6,2,2)
x.Result2()