Logo‎ > ‎Feladatok‎ > ‎

Gyakorlatok listakezeléshez

Első adag

  1. Fordítsd meg egy lista elemeinek sorrendjét!

  2. eljárás fordít :lista
      HAK (ELEMSZÁM :lista)<2 
       [EREDMÉNY :lista]
       [EREDMÉNY UTOLSÓNAK ELSŐ :lista fordít ELSŐNÉLKÜLI :lista]
    vége
  3. Döntsd el, hogy egy lista szimmetrikus-e!
  4. Válogasd ki egy listából a páros számokat!

  5. Holocsi Szilvi megoldása:

    eljárás T :elem
     hak (maradék :elem 2)=0
      [eredmény "igaz]
      [eredmény "hamis]
    vége

    eljárás kiválogatás :lista
     hak üres? :lista
     [eredmény []]
     [hak T első :lista
      [eredmény elsőnek (első :lista) kiválogatás elsőnélküli :lista
      ]
     [eredmény kiválogatás elsőnélküli :lista]] 
    vége

  6. Készítsd el két lista metszetét!
  7. Készítsd el két lista unióját!

Második adag

  1. Döntsd el, hogy egy lista rendezett-e!

  2. eljárás rendezett :lista
    HAK (ELEMSZÁM :lista) <= 1
    [
        EREDMÉNY "igaz
    ]
    [
        EREDMÉNY ÉS ELSŐ :lista < ELSŐ ELSŐNÉLKÜLI :lista RENDEZETT ELSŐNÉLKÜLI :lista
    ]
    vége

    A második (bonyolultabb) ágon lévő kifejezés kiértékelése:

  3. Számold meg, hány T tulajdonságú elem van egy listában! (A T tulajdonság egy logikai értéket visszaadó eljárás.)
  4. Illessz be egy rendezett listába egy elemet a helyére!
  5. Rendezz egy listát!
  6. Készítsd el két rendezett lista összefuttatását!
  7. Add meg egy lista középső elemét! (Ha páros sok elem van, akkor a két középső átlagát.)
  8. Döntsd el, hogy egy szám prím-e!

  9. Dobossy Kristóf megoldása:

    eljárás T :szám :osztó
        HA :szám = 1 [EREDMÉNY "hamis]
        HA :szám = 2 [EREDMÉNY "igaz]
        HAK (mod :szám :osztó-1)=0
             [EREDMÉNY "hamis]
             [HA :osztó>3 [EREDMÉNY T :szám :osztó-1]
                EREDMÉNY "igaz]
    vége

    eljárás prím :szám
        EREDMÉNY T :szám :szám
    vége

  10. Állítsd elő a prímek listáját valamilyen korlátig!

  11. Dobossy Kristóf megoldása: (Az elején üres listával kell meghívni.)

    eljárás prímek :korlát :lista
    HAK :korlát > 1
     [HAK prím :korlát
       [EREDMÉNY prímek :korlát-1 ELSŐNEK :korlát :lista]
       [EREDMÉNY prímek :korlát-1 :lista]
     ]
     [EREDMÉNY :lista]
    vége

  12. Válogasd ki egy listából a prímeket!

  13. Dobossy Kristóf megoldása:

    eljárás prímválogatás :lista
    HAK ÜRES? :lista
     [EREDMÉNY []]
     [HAK prím (ELSŐ :lista)
       [EREDMÉNY ELSŐNEK (ELSŐ :lista) prímválogatás ELSŐNÉLKÜLI :lista]
       [EREDMÉNY prímválogatás ELSŐNÉLKÜLI :lista]
     ]
    vége

Harmadik adag

Két állattenyésztő nyilvántartást vezet állatairól. Ez a nyilvántartás kétszeres mélységű sorozat, amely ábécé szerint rendezve tartalmazza az állatfajták nevét és darabszámát.

Példa

A: [[kacsa 5] [liba 13] [nyul 66] [tyuk 4]]
B: [[kacsa 1] [kecske 33] [nyul 99]]

Készíts olyan eljárást, ami
  1. megadja az összes állat számát! (A fenti példában 221.)
  2. megadja, hogy melyik állatból mennyi van összesen! (A példában [[kacsa 6] [kecske 33] [liba 13] [nyul 165] [tyuk 4]])
  3. megadja, hogy a két gazdának összesen hány fajta állata van! (A fenti példában öt fajta állat szerepel.)
  4. megadja, hogy melyik állatfajtából mennyit tudnak eladni akkor, ha egy-egy állatfajtából mindkettőjüknek ugyanannyit kell értékesíteniük! (A fenti példa szerint mindössze kacsát és nyulat adhatnak el, mégpedig: [[kacsa,1], [nyúl, 66]].)
  5. megadja, hogy hány olyan állatfajta van, amely csak egyik gazdának van! (A fenti példa szerint három ilyen állat van.)

Negyedik adag

Oldd meg a Hanoi-tornyai problémát!

Példa

[[3 2 1] [] []]
[[3 2] [] [1]]
[[3] [2] [1]]
[[3] [2 1] []]
[[] [2 1] [3]]
[[1] [2] [3]]
[[1] [] [3 2]]
[[] [] [3 2 1]]