class Sudoku: def __init__(self): self.feld = [[0 for i in range(9)] for j in range(9)] # Liest ein Sudoku als String ein, z.B. # "003020600900305001001806400008102900700000008006708200002609500800203009005010300" # "200080300\n060070084\n030500209\n000105408\n\n000000000\n402706000\n301007040\n720040060\n004010003" def parse(self,s): x=0 y=0 for c in s: if (c>="0" and c<="9") or (c=="."): if c==".": c="0" self.feld[x][y] = int(c) x+=1 if (x==9): x=0; y+=1 # Liest ein Sudoku von einer Text-Datei ein. def fromFile(self,f): file1 = open(f,"r") sudoku = file1.read() file1.close() self.parse(sudoku) # Umwandlung in ASCII-Art def __str__(self): hbar1 = ("#==="+"===="*2)*3+"#\n" hbar2 = ("#---"+"+---"*2)*3+"#\n" symbols = [str(i) for i in range(10)] symbols[0] = " " separators = ["|", "|", "#"] res = hbar1 for y in range(9): res += "#" for x in range(9): res += " "+symbols[self.feld[x][y]]+" "+separators[x%3] res+="\n" if y%3==2: res += hbar1 else: res += hbar2 return res # ENDE der Klasse Sudoku # Beginn vom Hauptprogramm s = Sudoku() s.parse("003020600900305001001806400008102900700000008006708200002609500800203009005010300") print(s)