Sudoku tävling

Skriv ut D m M Y

Sudoku uppgift

Enligt överenskommelse kommer 5 bonuspoäng att delas ut det första tentamenstillfället(ordinarie) till den som lämnat in och kort redovisat en god lösning för en sudoku-lösare. Tentan har med sannolikhet gränsande till visshet 50 som maxpoäng.


Det ges inte längre en traditionell tenta på denna kurs. Det teoretiska momentet är ett mycket kort prov som testar terminologi och ordförståelse.  Denna uppgift används numera som förslag till projektuppgift.

Sudoku

Hur sudoku fungerar kan du se på http://sv.wikipedia.org/wiki/Sudoku.

Uppgift

Uppgiften har följande krav

  • Olika sudokupussel ska kunna lösas utan omkompilering av programmet. Löses med fördel genom att läsa in pusslet från en textfil.
  • Den ska lösa de som på http://www.websudoku.com/ är uppmärkta som "easy" och "medium". Det finns vissa typer av pussel som kräver "gissningar", dessa behöver inte hanteras.
  • Pussel med flera lösningar behöver inte hanteras. Denna punkt är relaterad till den ovan; Om ett pussel har fler än en lösning kommer det vid något tillfälle att finnas två sätt att fortskrida, gissning krävs.
  • Lösningen ska vara anständigt kommenterad, med meningsfulla variabel och funktionsnamn.
  • Globala variabler är tillåtna i begränsad utsträckning. Typiskt bör de begränsas till sudoku-pusslets matris, eller motsvarande. Konstanter är naturligtvis ej räknade.
  • Algoritmen och programkoden ska kunna redogöras för i detalj vid redovisning.
  • Den algoritmiska delen av programmet får under inga omständigheter överstiga 700 rader programkod. Detta ska inte vara ett problem, typiska lösningar ligger på kring 200-300 rader. Om du mot förmodan får en lösning som är längre än 700 rader har du misslyckats med att dela upp lösningen i deluppgifter/funktionsanrop.
  • Programmet ska på lämpligt sätt delas upp i .h och .cpp filer.

Tips

Det finns naturligtvis sudoku-lösare att finna på nätet. Jag rekommenderar emellertid er att hålla er ifrån frestelsen att "tjuvkika" på någon lösning, och istället komma fram till en algoritm genom att själv spela några sudoku och sedan fundera och skissa. Att tjuvkika på en lösningsmetod kommer oundvikligen innebära att man låser sig till den lösningsmetoden. En egenhändigt hopsnickrad lösning kommer sannolikt att bli en smula osmidig, men istället ha charm, karaktär och en hel del finurlighet i sig.

Ett grafiskt gränssnitt

är en påtaglig förenkling för en användare av en sudokulösare. Man kan till och med tänka sig ett grafiskt gränssnitt som inte har som uppgift att "lösa" sudokus, utan istället låta användaren spela olika sudokuspel. Det är acceptabelt som projektuppgift.

Tänk på att  omfattningen av ett fullständigt spel kan vara förbluffande stor. Ägna tid åt att reflektera över omfattningen innan du beslutar dig för hur ditt projekt ska se ut.

Redovisning

Redovisning sker på vanligt sätt.

Redovisning sker genom en demonstration av program och en enkel förklaring av källkoden, eller om dator inte finns att tillgå, en förklaring av programmet utskrivet på papper.

Redovisningen görs innan första tentamenstillfället. Om det av någon anledning finns acceptabla förhinder skickas ett mail till martin.kjellqvist@miun.se innan ordinarie tentamens början.

 

Av praktiska skäl är jag tvungen att stryka tårtutmärkelsen.

Mycket goda lösningar => Tårta

Om någon av lösningarna skulle baseras på en mycket finurlig egenhändigt skapad algoritm, eller på annat sätt utmärka sig som en mycket berömvärd prestation kommer Martin att bjuda på tårta det sista tillfället. Detta förutsätter naturligtvis att den berörda lösningen lämnas in i rimlig tid innan sista tillfället samt att berörd konstruktör/konstruktörer åtar sig att kort presentera lösningen vid detta tillfälle.

Logga in

Lokal inloggning

Stäng meny