Sudoku 数独 (tal en gang)
Oprindelsen af Sudoku Suji wa dokushin ni kagir tallene må kun forekomme én gang Su doku tal enkelt Leonhard Euler Joseph Louis Lagrange Simeon Denis Poisson Gustav Peter Lejeune Dirichlet Rudolf Otto Sigismund Lipschitz C. Felix (Christian) Klein C. L. Ferdinand (Carl Louis) Lindemann Hermann Minkowski Constantin Carathéodory Georg Aumann Friedrich Ludwig Bauer David Gries Michael E. Caspersen Opfundet af Leonhard Euler Schweitzisk matematiker, 1707-1783 Største matematiker i det 18. århundrede Latinske kvadrater (romertal), 1783 Sudoku.2
Nutidens Sudoku Howard Garnes, 1979 Math Puzzles and Logic Problems, Dell Magazines Amerikansk puslespilsblad Et spil benævnt Number Place Nikoli, 1984 Japansk puslespilsblad Introducerede betegnelsen Suji wa dokushin ni kagir Stort hit fra 1986 (registreret varemærke) I dag Udgivelse af fem Sudoku-blade hver måned i Japan Sudoku.3
Sudoku og computerprogrammer Wayne Gould Startede i 1997 på et program der kunne lave Sudoku-spil Det tog ham efter sigende over seks år... waynegouldpuzzles.com/sudoku/ Leverer til engelske aviser... Debut i The Times, 12. november 2004... og danske Politiken, 12. juni 2005 Jyllands-Posten, 13. juni 2005 Ekstra Bladet, 15. juni 2005... Sudoku.4
GADs bestsellerliste, 14. oktober 2005 1. Litas: Sudoku 1 2. Litas: Sudoku 2 3. Litas: Sudoku 3 4. Sudoku for begyndere 5. Sudoku 6. Su Doku 7. Su Doku 2 8. Flere Sudoku 9. Junior Sudoku 10.Mange flere Sudoku Sudoku.5
Mennesket mod maskinen... (1) 3. 11. maj 1997 Deep Blue vinder matchen 3,5 2,5 Sudoku.6
Mennesket mod maskinen... (2) 11. maj 19... Kasper Dyb Gul Dyb Gul løfter 187,5 kg mod Kaspers 180 kg Sudoku.7
Computere og intelligens... En computer der spiller skak udviser menneskelige træk i samme grad som en gaffeltruck der løfter gods... Sudoku.8
Computerens styrke At kunne foretage simple beregninger lynhurtigt På kort tid at kunne lagre store datamængder søge i store datamængder bearbejde store datamængder afsøge et stort antal muligheder og kombinationer Informations-Repræsentations-Transformations- Maskine hurtig og sikker i detaljen skal programmeres! Sudoku.9
Computer og program En computer er en generel maskine, men uden program(mer) er den intet værd! Computer + X-program = X-maskine X = Windows, Linux, OS X, skak, sudoku, tekst, musik, studieadministration, social interaktion, flykontrol, strålebehandling, DNA-forskning, kommunikation, spil, læse, regne, undervise, motorstyring, bremsestyring, bolighandel, bilhandel, dagligvarehandel, billeddeling, videodeling, kvidre, søge, oversættelse, Program Program Program Program Computer Sudoku.10
Eksempel: En Sudoku-maskine Sudoko-løser Java Java VM C++ Computer Sudoku.11
Programmering Programmering = + Problemløsning Kodning (i Java) Sudoku.12
Program der kan spille Sudoku Sudoku.13
Opbygning af Grid Blok: 3 x 3 felter (block) Gitter: 9 blokke (grid) Sudoku.14
Spilleregel Blok Række Søjle I hver blok, række og søjle skal tallene 1..9 forekomme præcis en gang. Sudoku.15
Sudoku Strategier? Sudoku.16
Strategier med udgangspunkt i værdi Eliminering (Locked cells) udgangspunkt i en bestemt værdi (værdien 1) Afledt udelukkelse udgangspunkt i en bestemt værdi (værdien 2) Sudoku.17
Strategier med udgangspunkt i felt Komplettering udgangspunkt i et bestemt felt Sweeping udgangspunkt i et bestemt felt Sudoku.18
Hvis man har muskler nok Rå kraft (brute force) Afprøv systematisk alle lovende muligheder 1 2 3 4 a b c d e f g h i 3 9 2 7 8 1 7 9 2 3 9 9 2 7 8 7 8 a1 c1 e1 g1 5 8 i1 6 7 8 9 1 4 7 9 a2 b2 e2 2 4 h2 i2... Sudoku.19
Hvis man har muller nok Rå kraft (brute force) Afprøv systematisk alle lovende muligheder 1 2 3 4 a b c d e f g h i 3 9 2 7 8 1 7 9 4 3 9 9 2 7 8 7 8 a1 c1 e1 g1 5 8 i1 6 7 8 9 1 4 7 9 a2 b2 e2 2 4 h2 i1... Sudoku.20
Hvis man har muller nok Rå kraft (brute force) Afprøv systematisk alle lovende muligheder a b c d e f g h i 3 9 a1 1 2 3 4 3 9 2 7 8 4 9 2 7 8 7 8 c1 e1 g1 5 6 7 8 9 8 1 4 7? 9 2 4 i1 a2 b2 e2 h2 i1... Sudoku.21
Algoritmen prøvallemuligheder() { if <alle felter er udfyldt> { <udskriv grid> else { <husk seneste felt> <gå til næste frie felt> for <hvert ciffer c> { if <c er lovende> { <fastfrys feltværdi> prøvallemuligheder() a b c d e f g h i 3 9 2 7 8 1 7 9 4 1 2 3 4 5 6 7 8 9 // backtrack to previous field <fortryd fastfrosne værdi> <gå tilbage til forrige felt> Sudoku.22
Hvad har vi brug for at kunne på et Grid prøvallemuligheder() { if <alle felter er udfyldt> { <udskriv grid> else { <husk seneste felt> <gå til næste frie felt> for <hvert ciffer c> { if <c er lovende> { <fastfrys feltværdi> prøvallemuligheder() // allfilled() // printgrid() // currentfield() // advancetonextunfilled() // promissing(c) // setfieldvalue(c) // backtrack to previous field <fortryd fastfrosne værdi> <gå tilbage til forrige felt> // clearcurrentfield() // settofield() Sudoku.23
Java-version public void tryall() { if ( g.allfilled() ) { g.printgrid(); else { // try all promissing values at next field Field previous = g.currentfield(); g.advancetonextunfilled(); for ( int c = 1; c <=9; c++ ) { if ( g.promissing(c) ) { g.setfieldvalue(c); tryall(); // backtrack to previous field g.clearcurrentfield(); g.settofield(previous); Metoden promissing(c) benytter sweeping til at afgøre om en kandidat c er værd at satse på. blok række søjle Sudoku.24
Klassemodel void tryall() Solver 1 Grid boolean allfilled() void printgrid() Field currentfield() void advancetonextfield() boolean promissing(int c) void setfieldvalue(int v) void clearcurrentfield() void settofield(field f) Sudoku.25
En Sudoku-maskine Sudoko-løser Java Java VM C++ Computer Sudoku.26
En Sudoku-maskine Sudoko-løser: Solver Grid Java Java VM C++ Computer Sudoku.27
Time Magazine, 1984 In 1984, TIME magazine quoted the chief editor of a certain software publication as saying: "Put the right kind of software into a computer, and it will do whatever you want it to. There may be limits on what you can do with the machines themselves, but there are no limits on what you can do with software. Sludder! Der er grænser masser af grænser men ufatteligt mange ting kan lade sig gøre. Sudoku.28