Sudokulösarresurs
=====================
Vad är ett sudoku?
=================
Ett sudoku består av 9 gånger 9 rutor. I varje rad förekommer varje siffra(1 till 9)
endast en gång. Samma sak gäller kolumnerna och även för de nio mindre
rutorna inuti den stora. Jag kallar dem sektorer. Så vitt jag vet så måste varje
sudoku endast ha en lösning därför är kunskapen att konstruera ett sudoku med
lagom utmaning en vetenskap som jag inte närmare studerat.
Om du inte vet vad ett sudoku är så skulle du nog inte göra dig besvär att läsa
denna text. Därför förväntar jag mig att du ska vara lite nyfiken.
Bakgrund
=========
Att lösa ett sudoku är ganska spännande, men kan ta en del tid. Kanske är detta
en del av nöjet. Vore det inte bra om någon kunde vara fullständigt fokuserad
på uppgiften utan att göra fåniga misstag och därför behöva börja om från början?
Jag är inte så fokuserad, men vet ett stort antal metoder för att reducera antalet
möjliga lösningar för en ruta. Med hjälp av spekulation där min kunskap inte leder
till ett löst pussel, så kan ett program göra ett jobb som aldrig jag skulle ha tålamod till.
Detta program är resultatet av en lång tids analysering och många värdefulla tips.
Nuförtiden löser jag nästan aldrig sudokun, men jag har funnit stort nöje i att
utveckla detta lösningsprogram till min miniräknare. Så egentligen: Detta program
är skrivet för mitt nöjes skull och egentligen inte för att användas. Jag var bara
bestämd på att det skulle fungera så att jag kan gå vidare mot nya utmaningar.
Användning
===========
Hitta ett sudoku som du av någon anledning vill lösa och starta det här
programmet. Du kan inte köra det med delad skärm. Fyll i tomma rutor med siffran
noll och alla siffror såsom de står skriva och ignorera det faktum att det ofta är
indelat i nio sektorer. När allt ser ut att vara rätt, tryck F1 och låt räknaren jobba
några sekunder(på sin höjd) och du kommer antingen få se lösningen eller ett
meddelande som berättar vad som gick fel. Om sudokut är delvis löst så kan du
undersöka hur långt programmet klarade.
Lösningsmetod
==============
Detta program använder alla metoder jag känner till för att eliminera alla möjliga
lösningar för varje ruta. Det är många metoder inkluderade och dessutom en
nödlösning som gör att programmet chansar vid ett tillfälle för att se om det kan
finna en ruta som bara genererar en tillåten lösning(vilket ju är just så som sig bör).
Metoderna omnämns inte i denna text då det skulle bli ganska mycket skrivande.
Håll tillgodo och ha en trevlig dag!
Hälsningar
Pär Wiklund
Uppdatering 1.2:
Programmet har optimerats med avseende både på hastighet och storlek. Den
mest frekvent anropade algoritmen är snabbare, medan symmetrier i mer sällan
anropade funktioner har utnyttjats. Därigenom är programmet betydligt mindre
och något klokare vid lösningsförfarandet därutöver..
I detta fall borde minskad storlek vara värdefullare än något långsammare svar.