zondag 29 januari 2012

X-Wings: we solved two more...

Na eventjes zoeken op het internet ben ik op een zeer nuttige techniek gevallen: de X-Wings methode. Het is een techniek die meestal bij moeilijke sudokus wordt toegepast.

De methode houdt in dat we twee rijen/kolommen moeten vinden waarbij er per rij/kolom maximaal twee vakken bestaan die een bepaalde cijfer als mogelijkheid bevatten in overeenkomstige kolommen/rijen. In totaal krijgen we dan vier vakken die een rechthoek vormen. Het plaatsen van dit cijfer in een van de vier vakken impliceert noodzakeljik dat de vakken in de aanliggende hoekpunten dit cijfer juist niet kunnen bevatten en dat de vak in de overeenstaande hoekpunt opnieuw dit cijfer moet bevatten. Hierdoor kunnen de overblijvende vakken van de twee kolommen/rijen dit cijfer dus ook niet bevatten.
Dit principe heb ik dus nagebootst met mijn functie X_Wings(), die de nodige rijen of kolommen opzoekt.



Voor een betere tijdsefficiĆ«ntie heb ik ook beslist om de functie only_of() in de loop van de functie only_one() te plaatsen, zodat de ene wordt toegepast als de andere niet kan.


>>> solve(grids)



solved grids:  42/50
time:  14.755 s

Geen opmerkingen:

Een reactie posten