Wat merkwaardig is met de sudokus is dat hoe meer methodes je zoekt om ze te oplossen, hoe moeilijker en ingewikkeld de methodes worden!
Maar gelukkig kwamen er overtuigende resultaten na enkele dagen hard werken. Ik ben namelijk op een van de belangrijkste methodes na de basismethodes gevallen: de doubletten!
Deze berust op het feit dat als twee vakken binnen een entiteit (zelfde rij, kolom of grote vak) elk alleen maar twee keer dezelfde mogelijkheden bevatten (d.i. a =/= b met a,b ∈ [1,9] ∩ ℕ), alle andere vakken binnen deze entiteit deze twee mogelijkheden juist niet kunnen bevatten.
Er is ook een variant daarop waarbij als twee vakken binnen een entiteit de enige vakken zijn die twee bepaalde mogelijkheden bevatten, alle andere mogelijkheden binnen deze twee vakken kunnen worden uitgesloten.
Dit principe heb ik dus vervat in een functie met naam double(). Het is toch opmerkelijk dat het voltooiing van het tweede deel van de functie (de variant) veel meer tijd nodig heeft. Ik heb uiteindelijk ook gekozen om de niet volledig opgeloste sudokus op het scherm te laten verschijnen om ze later te kunnen analyseren.
>>> solve(grids)
solved grids: 47/50
time: 37.046 s
Geen opmerkingen:
Een reactie posten