Nivå och poängvärde: | C 90 |
---|---|
Kort beskrivning: | Vi kompletterar det givna sudoku-spelet med en funktion som granskar ifall ett drag var lagligt, samt en startmodul. |
Vad vi lär oss: | Tabeller, slingor inuti slingor, kommandoradsparametrar |
Frihet i implementationen: | Medel. Det finns inte detaljerade instruktioner, men problemet är så pass specifikt att det inte finns många sätt att lösa det. |
Realism: | Hög. Här kompletterar vi ett existerande program med nya egenskaper, vilket är en typisk programmeringsuppgift. |
Utmaning: | Tämligen utmanande. Att använda slingor inuti slingor är jobbigt för många och tabeller har inte heller använts så mycket hittills. |
Arbetsmängd: | Medel. Det är inte mycket kod som ska skrivas, men det tar tid att förstå programmet och att implementera den önskade algoritmen. Det lönas sig att reservera fyra timmar, för säkerhets skull kanske mer. |
Det givna projektet Sudoku är en implementation av spelet sudoku. Dess klasser beskriver spelets plan och rutor och det finns till och med ett grafiskt gränssnitt. Det fattas dock en startmodul, och programmet kan inte granska ifall spelarens drag är lagliga eller inte. Uppgiften är att åtgärda dessa två brister. Detaljerad information finns som vanligt i dokumentationen.
Lämna in de fixade filerna sudoku.py
och chart.py
i Goblin.
Cell
-klassens metoder. Ändra inte på denna klass.
(Den här bonusuppgiften är inte del av själva uppgiften. Man får alltså inga poäng.)
Den givna versionen av spelet är nådalös: ett felaktigt drag och spelet slutar där. Den givna spelversionen är också implementerad så att det är omöjligt att ångra tidigare drag -- när siffran är skriven i rutan, hålls den där. En annan brist är att det inte finns färdiga sudoku-uppgifter, man börjar alltid med en tom spelplan.
Om dessa brister stör dig eller om du annars bara vill öva lite mera på att programmera, kan du försöka ändra koden och fixa dessa brister. Du kan också implementera andra bekvämligheter, t.ex. att programmet ger tips om var man skulle kunna spela till näst.
(Bonusuppgiften ska inte lämnas in till Goblin, den förstår det inte och det erbjuds inte ens några poäng för detta.)