Informatika2-2022/CsütGyak10

A MathWikiből

Tartalomjegyzék

Feladatok

Elmaradt feladat

1. Zárt terület kifestése

Olvassuk be a picture.txt fájlt listák listájába (minden karakter egy elem)! Í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!

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

Lekezelések

2. Osztás

Írjunk egy divide() nevű függvényt, aminek nincs paramétere. A függvény futásakor inputként kér két számot és kimenetként a két szám hányadosát adja vissza. Kezeljük le azokat a kivételeket ha nem számot adunk meg, hanem például stringet, illetve azt az esetet, amikor nullával osztanánk.

Függvényekről általában

3. lista összeg

Hívjunk fának egy objektumot ha szám, vagy ha fák listája. Tehát például 0, 1 és 2 fák, mert számok, és így [0, 1, 2] is fa, mert fák listája. Ugyanezért [0, 1, [0, 1, 2], 2] is fa, és [0, [0, 1, 2], [0, [0, 1, 2], 1, [0, 1, 2], 2], 2] is az.
Írjon egy sumtree() nevű függvényt, amely egy fában szereplő számok összegét adja vissza. Például a fenti utolsó fára 14-et.

4. részlisták

Írjon egy sublists() nevű függvényt, amely az argumentumaként adott

lista összes részlistájának listáját adja vissza (tetszőleges sorrendben). (Itt most l1 részlistája l2-nek, ha kalkulus értelemben részsorozata, azaz ha l1 minden tagja szerepel l2-ben, mégpedig ugyanabban a sorrendben.) Például:

  sublists([])
  [[]]
  sublists([1])
  [[1], []]
  sublists([1,2])
  [[1, 2], [1], [2], []]
  sublists([1,2,3])
  [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2], [3], []]

5. függvény meghívás

Definiáljon egy kétargumentumú apply() függvényt, ami az első argumentumát (egy egyargumentumú függvény) alkalmazza a második argumentumára, és az eredményt adja vissza.

6. többszörös kompozíció

Definiáljon egy kétargumentumú self_compose függvényt úgy, hogy ha fun egyargumentumú függvény és n természetes szám, akkor self_compose(fun, n) fun n. hatványát (azaz n-szeres kompozícióját saját magával) adja vissza. Speciálisan, self_compose(fun, 1) magát fun-t, self_compose(fun, 2) pedig fun kompozícióját magával. Mit kellene visszaadnia self_compose(fun, 0)-nak? Ha nem tudja, tegye fel (és ellenőrizze assert-tel), hogy a második argumentum mindig pozitív.
Például:

  (self_compose(lambda x: x+1,3))(0)
  3

7. Átlag

Írjunk egy atlag() nevű függvény, melynek tetszőlegesen sok bemenete van és kimenetnénk a bemeneti számok átlagát adja vissza. Kezeljük le azt az esetet ha a bemenetek között van nem szám típusú objektum.

8. jó zárójelezés

Írjunk egy függvényt, aminek a bemenete egy string és eldönti, hogy jól van-e zárójelezve, vagyis, hogy minden nyitó '(' zárójel után következik-e megfelelően egy ')' zárójel valahol a stringben.

Személyes eszközök