Informatika2-2016/Gyakorlat11

A MathWikiből
A lap korábbi változatát látod, amilyen Nyida (vitalap | szerkesztései) 2016. április 28., 07:12-kor történt szerkesztése után volt.

Tartalomjegyzék

Feladatok

Pascal-háromszög

Írjunk egy függvényt! Bemenete egy egész szám, n, kimenete pedig a Pascal-háromszög n-edik sora (lista).

Huszárok

Áll a sakktáblán egy huszár. Számoljuk ki a sakktábla minden mezőjére, hogy legkevesebb hány lépéssel tudunk eljutni oda az előbbi huszárral! A feladat megoldásához írjunk egy függvényt, knight(x,y), amelynek két bemenete a huszár táblán elfoglalt helyének koordinátái. A visszatérési érték legyen egy nyolcszor nyolcas lista! Hsználjunk dinamikus programozást!

Zárt terület kifestése

Olvassuk be az alábbi "szöveget" listák listájába (minden karakter egy elem). Mentsük le egy fájlba kézzel, majd nyissuk meg a fájlt Pythonnal. Írjunk egy fill(x,y) függvényt, ami ugyanazt csinálja, mint a Paint kitöltő funkciója. Az (x,y) pontból kiindulva a . helyére # jelet tesz, amíg a # jel által jelölt falba nem ütközik! A módszer rekurzív: kifestjük az (x,y) pontot, majd a szomszédait, ha azok nem # jelek. Hívjuk meg a szomszédokra (akik nem # jelek) a függvényt rekurzívan. Ha nincs kit kiszínezni, akkor álljunk meg!

.....................................
...#######################...........
...#.....................#...........
...#.....................#...........
...#.....................#...........
...#.....................#...........
...#.....................#...........
...#.....................#######.....
...###.................##......#.....
...#..##.............##........#.....
...#....##.........##..........#.....
...#......##.....##............#.....
...#........#####..............#.....
...#........#..................#.....
...#.......##..................#.....
...#.....##....................#.....
...#...##......................#.....
...#############################.....
.....................................
.....................................
.....................................
.....................................

Állapotgép

Töltsük le az alábbi adatfile-t: raw_data.txt

A file tartalma egy rövid szöveg begépelése alatt történt billentyû lenyomásokat kódolja. Az érdekes rész az 5. sortól kezdõdik:

  • Az elsõ szó az esemény, a számunkra érdekesek a keydown és keyup események, ezek rendre a billentyû lenyomás és felengedés.
  • A következõ három szám a karakter kódja, innen a 2. (azaz a sorban 3. elem) a megbízható, használjuk ezt.
  • Az igaz-hamis érték a kis / nagy betûre vonatkozik, de mi ezzel most ne foglalkozzunk.
  • Az utolsó elem az érdekes még számunkra, ez az esemény idõpontja (pontosan az 1970 január 1. óta eltelt milliszekundumok).

A feladat az, hogy úgy dolgozzuk fel ezt az adathalmazt, hogy a billentyû lenyomások és felengedések közti idõt megkapjuk. Csak egy ilyen idõsor érdekel minket, a sorrend legyen a lenyomás pillanata szerint. Például az eleje így nézne ki:

145 80 74 ...

A 145-öt az alábbi két sorból kapjuk:

keydown 16 16 0 true 1444121075394
keyup 16 16 0 false 1444121075539

majd a 80-at:

keydown 84 84 0 true 1444121075462
keyup 84 84 0 false 1444121075542

a 74-et:

keydown 72 72 0 false 1444121075693
keyup 72 72 0 false 1444121075767

Az így kapott számsort írjuk egy kimenet.txt file-ba!

Segítség:

Rengeteg módon megoldható a feladat, ez csak egy ötlet:

  • Tároljuk a már lenyomott és felengedésre váró gombokat egy szótárban.
  • Ha megérkezett egy várt gomb felengedése akkor mentsük a lenyomás idõtartalmát, majd töröljük a szótárból.

Bónusz: rekonstruáljuk a beírt szöveget. Vigyázat, ez a file tartalmazza a backspace, SHIFT, stb. billentyûk lenyomását is.

Előadás

Személyes eszközök