Sudoku Solver

Status
Niet open voor verdere reacties.

wicherh

Gebruiker
Lid geworden
3 dec 2008
Berichten
188
Een Sudoku solver, heb ik gemaakt in 2 dagen.
Werkt goed je kan er sudoku's mee loaden en spelen, heb er al een paar (4 ofzo was te lui om er veel in te stoppen) in gedaan.
Ik heb deze gemaakt om mijn Skillz van formules maken etc. te verbeteren.
De solve functie werkt verschrikkelijk snel.

Functies:
Een easy mode zegt als je ergens een nummer niet kan plaatsen en kleurt rood waarom niet.
Een gemakkelijk interface, en een load functie van een .txt bestand.
Klik iets aan en typ een nummer om het te veranderen.

Bugs:
Solver werkt nu perfect, maar zoekt maar heeft maar een depth search van 1, daardoor kan hij niet alle sudoku's oplossen. (De sudoku's die er in zijn gestopt zijn verschrikkelijk moeilijk en daardoor kan hij ze niet oplossen want dan moet je een betere sudoku solver hebben (eentje die bruteforced (duurt heel lang)) of eentje met betere search

Download, en geef graag iets van feedback :P
De code heb je niet zoveel in want ik heb hem niet gecomment, en heb nog nooit zoon onoverzichtelijke code gemaakt. Als je hem leest snap je hem toch niet, maar als je hem echt wil zien, reageer dan ff. (gemaakt in VB .net, lkkr simpel, C++ duurt te lang)

Download (V1.1):
.Zip:
Bekijk bijlage Sudoku Solver V1.1.zip
.Rar:
Bekijk bijlage Sudoku Solver V1.1.rar
 
Laatst bewerkt:
Hey,

Ziet er nice uit :thumb:

Zitten er enkele onoplosbare sudoku's bij? zoniet doet hij ht in sommige gevallen niet correct.

Geschreven in vb.net of c#.net neme ik aan?

Cheers,
BN
 
Neh hij werkt correct maar heeft maar een depth search van 1, dat houdt in dat niet oplossing ziet die door door te denken ziet.

Hij werkt heel simpel de solver:
1. eerst zet hij alle mogelijkheden van het hele veld in een array
2. Checkt hij punten waar maar 1 mogelijkheid is
3. kijkt hij of er maar 1 mogelijkheid in een rij/collumn/veld is voor een nummer
4. herhaalt het als hij een nummer(s) vorige keer heeft gevonden.

Geschreven in vb .net
 
Hmm, ik kreeg na op oplossen te klikken een onvolledig resultaat met op de lege plaatsen geen mogelijkheid om iets te zetten -> veld verkeert of algoritme verkeerd (of ik xD).
 
dat is dus omdat jij het op de manieren die ik aangaf het ook niet kan oplossen misschien meot je wel gokken, mijn zus (sudoku fan, kan ze echt ziek goed, kon ze ook niet oplossen met de hand xD)
 
misschien meot je wel gokken
Als dat het geval is, is de opgave die je ingaf niet volledig.
Een Sudoku is per definitie eenduidig, en dus op te lossen zonder 'gokken'.

Enkele oplossingstechnieken:
  • Alle mogelijke cijfer voor een bepaald vak bijhouden, vak invullen indien er maar 1 overblijft
  • Alle mogelijke plaatsen voor een cijfer per rij/kolom/vierkant bijhouden, als een cijfer maar 1 plaats meer heeft, het op die plaats invullen
  • Cijfers kunnen als mogelijkheid geschrapt worden indien ze als zogeheten 'Tweeling' voorkomen. Dat wil zeggen dat er 2 vakjes in dezelfde rij/kolom/vierkant zijn die maar 2 mogelijke cijfers meer overhebben. Als gevolg kunnen die cijfers niet meer ergens anders in die rij/kolom/vierkant voorkomen.

Als je deze 3 mogelijkheden in je programma steekt, kom je al een heel eind

Veel succes! (als je je oplossingen wil controleren, kan je ook snel even een brute-force solver schrijven. Met recursie is dat zeer snel gedaan.)
 
Als dat het geval is, is de opgave die je ingaf niet volledig.
Een Sudoku is per definitie eenduidig, en dus op te lossen zonder 'gokken'.

Enkele oplossingstechnieken:
  • Alle mogelijke cijfer voor een bepaald vak bijhouden, vak invullen indien er maar 1 overblijft
  • Alle mogelijke plaatsen voor een cijfer per rij/kolom/vierkant bijhouden, als een cijfer maar 1 plaats meer heeft, het op die plaats invullen
  • Cijfers kunnen als mogelijkheid geschrapt worden indien ze als zogeheten 'Tweeling' voorkomen. Dat wil zeggen dat er 2 vakjes in dezelfde rij/kolom/vierkant zijn die maar 2 mogelijke cijfers meer overhebben. Als gevolg kunnen die cijfers niet meer ergens anders in die rij/kolom/vierkant voorkomen.

Als je deze 3 mogelijkheden in je programma steekt, kom je al een heel eind

Veel succes! (als je je oplossingen wil controleren, kan je ook snel even een brute-force solver schrijven. Met recursie is dat zeer snel gedaan.)

De eerste 2 zitten er dus al in maar, die 3e lukt me niet want dat is dus in depth zoeken. Dus dat zit er niet in, das waarschijnelijk waarom ik die niet alle dingen kan oplossen.
 
puut werkt niet deftig vooral bij iets moelijkere sudokus wekrt hij niet laat hij vakjes open of jij hebt fout geaakt(typfout of variablefout) of waarschijnlijk moet je hier gokken het werkt niet gloof me
:P:P:P:P:P:P:d:d:d:d:d:confused:
 
Welkom op Helpmij.nl.:)

Topics van 2009 mogen met rust gelaten worden, deze zijn al heel lang niet actueel meer.

slotje.gif
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan