richtige Python Datei eingefügt
This commit is contained in:
parent
438e1c1252
commit
edb3e0c86f
|
@ -0,0 +1,69 @@
|
|||
import time
|
||||
|
||||
# Das Sudoku-Startfeld
|
||||
start = [
|
||||
[0, 8, 0, 0, 2, 0, 5, 6, 0],
|
||||
[0, 0, 0, 1, 0, 0, 0, 0, 7],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[0, 5, 0, 0, 9, 0, 4, 0, 8],
|
||||
[0, 0, 7, 8, 0, 0, 0, 0, 3],
|
||||
[0, 9, 0, 0, 1, 0, 0, 5, 0],
|
||||
[2, 0, 4, 0, 0, 0, 8, 0, 0],
|
||||
[0, 6, 0, 0, 8, 5, 0, 0, 0],
|
||||
[0, 0, 0, 2, 0, 0, 1, 0, 0]
|
||||
]
|
||||
|
||||
def isfine(feld, x, y):
|
||||
# Doppelte Zahl in Zeile oder Spalte prüfen
|
||||
for yi in range(9):
|
||||
if yi != y and feld[x][yi] == feld[x][y]:
|
||||
return False
|
||||
for xi in range(9):
|
||||
if xi != x and feld[xi][y] == feld[x][y]:
|
||||
return False
|
||||
|
||||
# Neuner-Kästchen-Test
|
||||
x1 = (x // 3) * 3
|
||||
y1 = (y // 3) * 3
|
||||
for xk in range(x1, x1 + 3):
|
||||
for yk in range(y1, y1 + 3):
|
||||
if (xk != x or yk != y) and feld[xk][yk] == feld[x][y]:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def nextone(feld, x, y):
|
||||
if y == 9:
|
||||
y = 0
|
||||
x += 1
|
||||
if x == 9:
|
||||
return True
|
||||
|
||||
if feld[x][y] > 0:
|
||||
if not isfine(feld, x, y):
|
||||
return False
|
||||
return nextone(feld, x, y + 1)
|
||||
else:
|
||||
for feld[x][y] in range(1, 10):
|
||||
if not isfine(feld, x, y):
|
||||
continue
|
||||
if nextone(feld, x, y + 1):
|
||||
return True
|
||||
feld[x][y] = 0
|
||||
return False
|
||||
|
||||
def main():
|
||||
tstart = time.time()
|
||||
|
||||
if nextone(start, 0, 0):
|
||||
for row in start:
|
||||
print(row)
|
||||
else:
|
||||
print("Nope!")
|
||||
|
||||
time1 = time.time()
|
||||
print(f"{tstart} - {time1} * {time.CLOCKS_PER_SEC}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Loading…
Reference in New Issue