Informatika2-2013/PotHazi2

A MathWikiből
(Változatok közti eltérés)
 
(egy szerkesztő 4 közbeeső változata nincs mutatva)
3. sor: 3. sor:
 
* 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 hozzá: import copy)
+
** 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.
 
** Az '''__init__''' számolja ki hány üres mezõ van a megadott sudoku-ban és tárolja ezt egy ''uresek'' adattagban.
 
<python>
 
<python>
12. sor: 12. sor:
 
* 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 így történik-e).
+
* 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 az ezzel a mûvelettel az üres mezõk száma 0-ra csökkent írja ki, hogy "Nyertel!"
+
** 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 19., 23: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!
Személyes eszközök