Informatika2-2013/PotHazi2
A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „Írj '''Sudoku''' osztályt, elég minimalista lesz, de kibõvíthetitek. * Létrehozáskor kelljen megadni neki egy listák listáját, melyben egy sudoku feladvány …”) |
|||
(egy szerkesztő 6 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
− | Írj '''Sudoku''' osztályt, elég minimalista lesz, de kibõvíthetitek. | + | Í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. | * 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. | ** ''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 | + | ** 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. | ||
<python> | <python> | ||
import copy | import copy | ||
l_masolat = copy.deepcopy(l_eredeti) | l_masolat = copy.deepcopy(l_eredeti) | ||
</python> | </python> | ||
− | |||
* Legyen '''__repr__''' metódusa, mely kiírja a sudoku-t, az üres helyekre szóközt tegyen ne az ott levõ 0-t. | * 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 | + | * 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. | ** 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 ''0'' azaz üres elemet állít át akkor az ''uresek'' adattagot csökkentse eggyel. | ||
− | ** Ha | + | ** Ha ezzel a mûvelettel az üres mezõk száma 0-ra csökkent írja ki, hogy "Nyertel!" |
Egy példa futtatás: | Egy példa futtatás: | ||
<python> | <python> | ||
s = Sudoku([ \ | s = Sudoku([ \ | ||
− | [5, 4, 2, 9, 7, 1, 8, 3, 6], \ | + | [5, 4, 2, 9, 7, 1, 8, 3, 6], \ # \ jellel lehet tobb sorba irni parancsokat |
[9, 3, 6, 5, 4, 8, 2, 0, 1], \ | [9, 3, 6, 5, 4, 8, 2, 0, 1], \ | ||
[7, 1, 8, 3, 6, 2, 5, 9, 4], \ | [7, 1, 8, 3, 6, 2, 5, 9, 4], \ | ||
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 jelenlegi, 2013. május 20., 00:25-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], \ # \ jellel lehet tobb sorba irni parancsokat [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!