AI urice 1: Umetna inteligenca in kaj se lahko naučimo od narave / Osnove lispa

Naloge

  1. Napiši funkcijo flatten, ki sprejme drevo (kot gnezden seznam) poljubne globine in ga spremeni v sploščen seznam.

    Primer

    (flatten '(a (b (c d) (e (f g)) h) i)) => '(a b c d e f g h i)

  2. Napiši funkcijo unzip, ki sprejme seznam cons parov in ga razcepi v seznam vseh prvih in vseh drugih elementov.

    Primer

    (unzip '((a . 1) (b . 2) (c . 3))) => '(a b c) '(1 2 3)

    Namig

  3. Napiši funkcijo take, ki sprejme sekvenco (seznam ali vektor) in iz nje izžreba n naključnih elementov.

    Primer

    (take '(a b c d e) 2) => '(e b)

    Namig

  4. Dopolni take tako, da sprejme še keyword parameter :weights, s katerim lahko podamo uteži za žreb. Vsak element v :weights je utež istoležnega elementa v prvem parametru.

    Primer

    (take '(a b c d e) 3 :weights '(0.1 0.1 0.8 0.4 0.1)) => '(c a d)

  5. Napiši funkcije vector+, vector-, vector*, za pare vektorjev.

    Primer

    (vector+ #(1 2 3) #(1 -2 4)) => #(2 0 7)

  6. Dopolni funkcije iz prejšnje naloge tako, da sprejmejo poljubno mnogo vektorjev.

  7. Napiši funkcije scale, normalize, ki sprejmejo vektor in skalar.

    Primer

    (scale #(1 2 3) 0.5) => #(0.5 1 1.5)
    (normalize #(1 2 3) 3) => #(0.33 0.66 1)

Rešitve

Gradivo

Umetna inteligenca

Lisp

  • Knjige/Common Lisp
  • Eseji
  • Knjige/Lisp na splošno
  • Članki/napredno