2025-02-05 15:00:15 +01:00

115 lines
2.9 KiB
Python

import threading
from Sodoku.Kaestchen import Kaestchen
class Sodoku:
def __init__(self):
self.alleZellen = [[Kaestchen(x, y) for x in range(3)] for y in range(3)]
def __str__(self):
gesamt = ""
for index, zelle in enumerate(self.alleZellen):
gesamt += str(zelle)
if (index + 1) % 3 == 0:
gesamt += "\n"
return gesamt
def __repr__(self):
gesamt = ""
for index, zelle in enumerate(self.alleZellen):
gesamt += str(zelle)
if (index + 1) % 3 == 0:
gesamt += "\n"
return gesamt
def wert_eintragen(self, wert, zeile, spalte):
self.alleZellen[zeile//3][spalte//3].wert_eintragen(wert, zeile, spalte)
def update_screen(self):
print(self)
def raetsel_erstellen(self):
# Zeile 1
self.wert_eintragen(8, 0, 1)
self.wert_eintragen(5, 0, 5)
self.wert_eintragen(1, 0, 6)
self.wert_eintragen(7, 0, 7)
self.wert_eintragen(9, 0, 8)
# Zeile 2
self.wert_eintragen(2, 1, 3)
self.wert_eintragen(6, 1, 5)
self.wert_eintragen(8, 1, 7)
self.wert_eintragen(4, 1, 8)
# Zeile 3
self.wert_eintragen(9, 2, 0)
self.wert_eintragen(3, 2, 2)
self.wert_eintragen(6, 2, 6)
# Zeile 4
self.wert_eintragen(2, 3, 0)
self.wert_eintragen(7, 3, 1)
self.wert_eintragen(8, 3, 4)
self.wert_eintragen(5, 3, 6)
self.wert_eintragen(3, 3, 8)
# Zeile 5
self.wert_eintragen(4, 4, 0)
self.wert_eintragen(5, 4, 4)
self.wert_eintragen(8, 4, 6)
self.wert_eintragen(1, 4, 7)
self.wert_eintragen(2, 4, 8)
# Zeile 6
self.wert_eintragen(8, 5, 2)
self.wert_eintragen(4, 5, 4)
self.wert_eintragen(2, 5, 5)
self.wert_eintragen(7, 5, 8)
# Zeile 7
self.wert_eintragen(8, 6, 0)
self.wert_eintragen(3, 6, 5)
self.wert_eintragen(1, 6, 8)
# Zeile 8
self.wert_eintragen(3, 7, 0)
self.wert_eintragen(5, 7, 1)
self.wert_eintragen(4, 7, 2)
self.wert_eintragen(1, 7, 4)
self.wert_eintragen(9, 7, 7)
# Zeile 9
self.wert_eintragen(9, 8, 1)
self.wert_eintragen(6, 8, 2)
self.wert_eintragen(2, 8, 4)
self.wert_eintragen(4, 8, 5)
self.wert_eintragen(7, 8, 6)
def loesen(self):
alleThreads = []
name = 0
for i in self.alleZellen:
for j in i:
name += 1
alleThreads.append(threading.Thread(name=name, target=j.loesen, args=(self, )))
for thread in alleThreads:
thread.start()
for thread in alleThreads:
thread.join()
print("Das Sodoku wurde gelöst: ")
print(self)
if __name__ == "__main__":
sodoku = Sodoku()
sodoku.loesen()