ϵ">]> Clausal Language (ver. 5.81.20, by P.J. Voda, J. Komara, J. Kluka)
...
Clausal Language (ver. 5.81.20, by P.J. Voda, J. Komara, J. Kluka)
Module  Ex05a

Remark 

Prémiová domáca úloha du05. (1 + 1 + 2 + 1 bod)

Pravidlá pre prémiové domáce úlohy nájdete na http://dai.fmph.uniba.sk/courses/udp/#pdu

Časť d) sa nachádza v ex05c.

a) (1 bod) Naprogramujte funkciu Rotl podľa vyššie uvedeného zadania bez použitia pomocných funkcií a bez zreťazenia.

b) (1 bod) Naprogramujte funkciu Rotr podľa vyššie uvedeného zadania bez použitia pomocných funkcií a bez zreťazenia.

c) Asociatívne zoznamy. (2 body)

Definícia. Asociatívny zoznam je zoznam dvojíc kľúč-hodnota.

Naprogramujte funkcie Lookup a Update na prácu s asociatívnymi zoznamami.

Hodnotou funkcie Lookup (kvs,k) je jednoprvkový zoznam v,0 , ak v je prvá hodnota, ktorá je v asociatívnom zozname kvs priradená kľúču k . Ak taká hodnota neexistuje, hodnotou Lookup (kvs,k) je prázdny zoznam.

¬ v (k, v ) &CLin; kvs1 Lookup ( kvs1 ( (k,v) , kvs2 ) ,k) =v,0 ¬ v (k, v ) &CLin;kvs Lookup (kvs,k) =0

Napríklad Lookup ( ( (2,2) , (8,3) , (7,5) , (4,7) , (7,11) , (5,13) , (9,17) ,0) ,7) =5,0 a Lookup ( ( (2,2) , (8,3) , (7,5) , (4,7) , (7,11) , (5,13) , (9,17) ,0) ,3) =0 .

Funkcia Update (kvs,k,v) v asociatívnom zozname kvs zmení prvú hodnotu priradenú kľúču k na v . Ak sa kľúč k v zozname kvs doteraz nenachádzal, Update (kvs,k,v) pridá dvojicu (k,v) na koniec kvs .

¬ v (k, v ) &CLin; kvs1 Update ( kvs1 ( (k,u) , kvs2 ) ,k,v) = kvs1 ( (k,v) , kvs2 ) ¬ v (k, v ) &CLin;kvs Update (kvs,k,v) =kvs ( (k,v) ,0)

Napríklad Update ( ( (2,2) , (8,3) , (7,5) , (4,7) , (7,11) , (5,13) , (9,17) ,0) ,7,6) = (2,2) , (8,3) , (7,6) , (4,7) , (7,11) , (5,13) , (9,17) ,0 a Update ( ( (2,2) , (8,3) , (7,5) , (4,7) , (7,11) , (5,13) , (9,17) ,0) ,3,19) = (2,2) , (8,3) , (7,5) , (4,7) , (7,11) , (5,13) , (9,17) , (3,19) ,0 .

Testovanie.

    Lookup_test = r:Results
    Update_test = r:Results
Query:


Results: