Sudoku 数 独 (tal en gang). dIntProg, E08Sudoku.2 Oprindelsen af Sudoku Suji wa dokushin ni kagir –tallene må kun forekomme én gang Su doku –tal enkelt.

Slides:



Advertisements
Lignende præsentationer
Grundlæggende IT Lektion 4 Sådan virker pc’en
Advertisements

Kryptering og Computere INTRODUKTION TIL KRYPTERING.
Internet til alvor og sjov
Tværfagæligt forløb i PET-CT
Pc-kørekort Sådan virker pc’en Keld Hinsch.
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Tema 3: Web-crawler Udvikle Web-crawler, som tager en URI som input og besøger samtlige sider på siten som URI’en peger på. Fx –
Søgning & sortering Intro søgning Lineær søgning Binær søgning
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Anvendelser I Leg og spil.
Klik på nummerne i den rigtige rækkefølge
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
1 Kommunikation i og fra gruppen MÅL: At gruppen og dens medlemmer bliver bevidste om deres måde at kommunikere på, samt dens betydning for gruppesamarbejdet.
Kursusintroduktion Introduktion til programmering
Forelæsning 3.2 Billedredigering (bl.a. brug af for-løkker)
Lektion 7 Læsestof: Kopier fra Caranno
Tornado.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
Sudoku 数 独 (tal en gang). dIntProg, E12Sudoku.2 Oprindelsen af Sudoku Suji wa dokushin ni kagir –tallene må kun forekomme én gang Su doku –tal enkelt.
Fundamentale sprogbegreber
Anvendelser I Leg og spil.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Quiz 3.1. Quiz 1 – Assignment dIntProg, E14 Hvad er værdierne af x og y efter udførelse af følgende program? 1.x er 6, y er 3 2.x er 8, y er 5 3.x er.
Søgning.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSøgning.2 Søgeproblemer... Søgning efter fil(er) Søgning i databaser.
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Rekursion 2.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive.
Sortering.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSortering.2 Sortering Vi hartidligere set at effektiv søgning forudsætter.
Rekursive skildpadder Supertrekanter.....  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursive skildpadder.2 Penta, etc.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7A.1 Rekursion.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.1 Sortering.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Michael E. Caspersen, 2000 Introducerende objektorienteret programmering4A.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Billedbehandling – processering af digitale billeder.
Del, løs og kombinér Et algoritmemønster.
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Eksamen Praktisk prøve.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering7B.1 Søgning.
SLP 6 Gruppen Kommunikation Hvordan bidrager jeg til kommunikationen Øvelse i konsensus 7 former for intelligens Opgave Plenum.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
SKRIVEFAGET Modul 2: Tekstsammenhæng Lektion 5: Tænk på din læser!
ErgoMap® Corporate Occupational Health Service (COHS) Novo Nordisk A/S Jacob Ragborg KASPER KOFOD Denmark Ergonomiseminar 2012.
Forelæsning Uge 1 – Mandag Hvad er programmering? –Eksempel: program, der kan løse sudoku opgaver –Programmering og problemløsning dIntProg kurset –Hvad.
Forelæsning Uge 1 – Mandag Hvad er programmering? –Eksempel: program, der kan løse sudoku opgaver –Programmering og problemløsning dIntProg kurset –Hvad.
Forelæsning Uge 1 – Mandag
Quiz – Uge 3 – mandag – første time
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Velkommen til Introduktion til Programmering
Anvendt Statistik Lektion 6
Modul 9: ”Flere muligheder”
Det lydløse terningekast
Præsentationens transcript:

Sudoku 数 独 (tal en gang)

dIntProg, E08Sudoku.2 Oprindelsen af Sudoku Suji wa dokushin ni kagir –tallene må kun forekomme én gang Su doku –tal enkelt Opfundet af Leonhard Euler –Schweitzisk matematiker, –Største matematiker i det 18. århundrede –Latinske kvadrater (romertal), 1783 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

dIntProg, E08Sudoku.3 Nutidens Sudoku Howard Garnes, 1979 Math Puzzles and Logic Problems, Dell Magazines –Amerikansk puslespilsblad –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

dIntProg, E08Sudoku.4 Sudoku og computerprogrammer Wayne Gould –Startede i 1997 på et program der kunne lave Sudoku-spil –Det tog ham efter sigende over seks år... – (Pappocom) Leverer til engelske aviser... –Debut i The Times, 12. november og danske –Politiken, 12. juni 2005 –Jyllands-Posten, 13. juni 2005 –Ekstra Bladet, 15. juni 2005 –...

dIntProg, E08Sudoku.5 GADs bestsellerliste, 14. oktober 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

dIntProg, E08Sudoku.6 Mennesket mod maskinen... (1) Deep Blue vinder matchen 3,5 – 2,5 3. – 11. maj 1997

dIntProg, E08Sudoku.7 Mennesket mod maskinen... (2) Dyb Gul løfter 187,5 kg mod Kaspers 180 kg 11. maj KasperDyb Gul

dIntProg, E08Sudoku.8 Computere og intelligens... En computer der spiller skak udviser menneskelige træk i samme grad som en gaffeltruck der løfter gods...

dIntProg, E08Sudoku.9 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...

dIntProg, E08Sudoku.10 Program der kan spille Sudoku

dIntProg, E08Sudoku.11 Opbygning af Grid Blok: 3 x 3 felter (block) Gitter: 9 blokke (grid)

dIntProg, E08Sudoku.12 Spilleregel I hver blok, række og søjle skal tallene 1..9 forekomme præcis en gang. Blok Række Søjle

dIntProg, E08Sudoku.13 Strategier med udgangspunkt i værdi Eliminering (Locked cells) –udgangspunkt i en bestemt værdi (1) Afledt udelukkelse –udgangspunkt i en bestemt værdi (2)

dIntProg, E08Sudoku.14 Strategier med udgangspunkt i felt Komplettering –udgangspunkt i et bestemt felt Sweeping –udgangspunkt i et bestemt felt

dIntProg, E08Sudoku.15 Hvis man har muskler nok Rå kraft (brute force) Afprøv systematisk alle lovende muligheder a b c d e f g h i a1 c1 e1 g1 i1 a2 b2 e2 h2 i

dIntProg, E08Sudoku.16 Hvis man har muller nok Rå kraft (brute force) Afprøv systematisk alle lovende muligheder a b c d e f g h i a1 c1 e1 g1 i1 a2 b2 e2 h2 i

dIntProg, E08Sudoku.17 Hvis man har muller nok Rå kraft (brute force) Afprøv systematisk alle lovende muligheder a b c d e f g h i a1 c1 e1 g1 i1 a2 b2 e2 h2 i ? Og så videre...

dIntProg, E08Sudoku.18 Algoritmen prøvAlleMuligheder() { if { } else { for { if { prøvAlleMuligheder() } } // backtrack to previous field } } a b c d e f g h i

dIntProg, E08Sudoku.19 Hvad har vi brug for at kunne på et Grid prøvAlleMuligheder() { if { } else { for { if { prøvAlleMuligheder() } // backtrack to previous field } // allFilled() // printGrid() // currentField() // advanceToNextUnfilled() // promissing(c) // setFieldValue(c) // clearCurrentField() // setToField()

dIntProg, E08Sudoku.20 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

dIntProg, E08Sudoku.21 Klassemodel Grid boolean allFilled() void printGrid() Field currentField() void advanceToNextField() boolean promissing(int c) void setFieldValue(int v) void clearCurrentField() void setToField(Field f) Solver void tryAll() 1