Informatika2-2016/Gyakorlat11
(→Zárt terület kifestése) |
|||
(2 szerkesztő 8 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
=Feladatok= | =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 === | === Állapotgép === | ||
26. sor: | 56. sor: | ||
keyup 72 72 0 false 1444121075767 | keyup 72 72 0 false 1444121075767 | ||
− | Segítség: | + | 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== | ==Előadás== |
A lap jelenlegi, 2016. április 28., 08:12-kori változata
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.