Dobrý deň. Chcem sa spýtať, či pri kontrolovaní správnosti Sudoku plochy nestačí skontrolovať len unikátne čísla v riadkoch a stĺpcoch, ale treba kontrolovať aj 3x3 polia. Prikladám aj svoju funkciu, ako som to riešil ja a som otvorený prípadným zlepšeniam a návrhom.
Ďakujem.
def Vyhral():
vyhral1 = False
vyhral2 = False
for i in range( 9 ):
listRiadok = [ 1,2,3,4,5,6,7,8,9 ]
listStlpec = [ 1,2,3,4,5,6,7,8,9 ]
for j in range( 9 ):
for k in listRiadok: #pre kazde cislo v riadku loopujem listom cisel 1-9, ked najdem, tak ho vyhodim z listu, na konci riadka musi zostat prazdny list, ak je tam kazde cislo prave raz
if k == thismodule.plocha[ i * 9 + j ]: #riadky
listRiadok.remove( k )
break
for l in listStlpec:
if l == thismodule.plocha[ j * 9 + i ]: #stlpce
listStlpec.remove( l )
break
if not listRiadok: #je v kazdom riadku kazde cislo prave raz ( t.j. list musi byt prazdny )?
vyhral1 = True
else:
vyhral1 = False #ak je aspon v jednom riadku nejaka duplicita, netreba ist dalej
break
if not listStlpec:
vyhral2 = True
else:
vyhral2 = False
break
return vyhral1 and vyhral2