Informatika2-2013/PotHazi2
A MathWikiből
(Változatok közti eltérés)
48. sor: | 48. sor: | ||
1 6 9 7 5 4 3 2 8 | 1 6 9 7 5 4 3 2 8 | ||
8 3 2 1 9 7 6 5 | 8 3 2 1 9 7 6 5 | ||
− | |||
Nyertel! | Nyertel! |
A lap 2013. május 20., 00:24-kori változata
Írj Sudoku osztályt, elég minimalista lesz, de kibõvíthetitek piros pontért.
- Létrehozáskor kelljen megadni neki egy listák listáját, melyben egy sudoku feladvány van megadva, a belsõ listák a sudoku sorai.
- 0 jelöli az üres mezõket.
- Az __init__ másolja le a kapott listát és tárolja adattagként a másolatot, másoláshoz lehet használni a deepcopy-t (kell hozzá: import copy)
- Az __init__ számolja ki hány üres mezõ van a megadott sudoku-ban és tárolja ezt egy uresek adattagban.
import copy l_masolat = copy.deepcopy(l_eredeti)
- Legyen __repr__ metódusa, mely kiírja a sudoku-t, az üres helyekre szóközt tegyen ne az ott levõ 0-t.
- Legyen set metódusa, mely két (i, j) indexet (sort, oszlopot) és egy 1-9 közti x számot kap (nem kell ellenõrizni, hogy tényleg jót adunk-e meg).
- A metódus állítsa a sudoku i. sorának j. elemét x-re.
- Ha 0 azaz üres elemet állít át akkor az uresek adattagot csökkentse eggyel.
- Ha ezzel a mûvelettel az üres mezõk száma 0-ra csökkent írja ki, hogy "Nyertel!"
Egy példa futtatás:
s = Sudoku([ \ [5, 4, 2, 9, 7, 1, 8, 3, 6], \ [9, 3, 6, 5, 4, 8, 2, 0, 1], \ [7, 1, 8, 3, 6, 2, 5, 9, 4], \ [8, 2, 5, 6, 9, 3, 4, 1, 0], \ [6, 7, 4, 1, 0, 5, 9, 8, 3], \ [3, 9, 1, 4, 8, 7, 6, 5, 2], \ [2, 5, 7, 8, 3, 6, 1, 4, 9], \ [1, 6, 9, 7, 5, 4, 3, 2, 8], \ [0, 8, 3, 2, 1, 9, 7, 6, 5]]) print s s.set(4, 4, 2) s.set(1, 7, 7) s.set(8, 0, 4) s.set(4, 8, 7)
Erre a kimenet:
5 4 2 9 7 1 8 3 6 9 3 6 5 4 8 2 1 7 1 8 3 6 2 5 9 4 8 2 5 6 9 3 4 1 6 7 4 1 5 9 8 3 3 9 1 4 8 7 6 5 2 2 5 7 8 3 6 1 4 9 1 6 9 7 5 4 3 2 8 8 3 2 1 9 7 6 5 Nyertel!