User Tools

Site Tools


predmeti:ppj:seznami

Seznami

  1. Sintaksa podobna javanski ali pythonovski
    • prazen seznam: []
    • seznam z elementi: [1,2,3]
    • seznam lahko vsebuje različne stvari: [a,b,1,2]
    • … tudi druge sezname: [a,1,[c,2]]
    • … in spremenljivke: [a,b,X,Y]
  2. Interna predstavitev s strukturo .(H,T)
    • (SWI-Prolog ≥ 7 uporablja funktor [|] namesto .)
    • povezan seznam (linked list), ne polje (array)!
    • primer: drevo za [a,b,c]
    • dostop le do prvega elementa, v splošnem O(n)
  3. Prilagajanje
    • L = [a,b,c]
    • [X,Y,Z] = [a,b,c]
    • seznam lahko razbijemo na glavo in rep
      • List = [a,b,c], List = [H|T]
      • [H|T] = [a,b,c]
      • H = a, T = [b,c]
    • … lahko pa ga sestavimo iz glave in repa
      • H = a, T = [b,c], List = [H|T]
    • … praznega seznama ne moremo razbiti
      • [H|T] = []
    • glava H je prvi element seznama
      • glava je lahko tudi seznam, npr. [H|T] = [ [a,b], 1, 2, 3 ]
    • rep T je vedno seznam, lahko pa je prazen
    • z začetka seznama lahko vzamemo več elementov
      • [H1,H2|T] = [a,b]
      • sintaktični sladkorček za [H1|[H2|T]]
  4. Naloge
    • insert/3
      • rešimo skupaj
    • memb/2
    • del/3
      • opozori na uporabo pravilnih imen zaradi testiranja, ker jih pol piše delete namesto del
    • dup/2
    • conc/3
    • last_elem/2
    • divide/3
    • permute/2
      • vrača (generira) vse permutacije; vrstni red ni pomemben
predmeti/ppj/seznami.txt · Last modified: 2016/04/12 11:53 by timotej