Advertisement
Guest User

Untitled

a guest
Nov 28th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 2.68 KB | None | 0 0
  1. #lang racket ;
  2.  
  3. #| power, ki sprejme število x in potenco n, ter vrne n-to potenco
  4. števila x (0 je veljavna potenca). |#
  5. (define (power x n)
  6.   (if (= n 0)
  7.       1
  8.       (* x (power x (- n 1)))))
  9.  
  10. #| gcd, ki sprejme dve števili, in vrne njun največji skupni delitelj. |#
  11. (define (gcd a b)
  12.   (if (= b 0) a (gcd b (modulo a b))))
  13.  
  14. #|fib, ki sprejme število n in vrne n-to fibonaccijevo število.
  15. (fibonacccijeva števila so 1 1 2 3 5 ..., za n=3 naj funkcija vrne 2. |#
  16. (define (fib n)
  17.   (if(or (= n 0) (= n 1)) n  (+ (fib(- n 1)) (fib(- n 2)) )))
  18.  
  19. #|reverse, ki sprejme seznam in vrne obrnjen seznam
  20. (za dodajanje na konec seznama lahko uporabite vgrajeno funkcijo append) |#
  21. (define (reverse xs)
  22.   (if(null? xs) null (append(reverse(cdr xs)) (list (car xs)))))
  23.  
  24. #|remove, ki sprejme element x in seznam, ter vrne nov seznam,
  25. ki je enak kot vhodni, le da so v njem odstranjene vse pojavitve elementa x. |#
  26. (define (remove x xs)
  27.   (if(null? xs) null (if(= x (car xs)) (remove (cdr xs) x) (append (list (car xs)) (remove (cdr xs) x)))))
  28.  
  29.  
  30. #| map, ki sprejme funkcijo in seznam ter vrne seznam rezultatov,
  31. ki jih vrne podana funkcija, če jo zapovrstjo kličemo na elementih vhodnega seznama. |#
  32. (define (map f xs)
  33.   (if(null? xs) null (append (list(f(car xs))) (map f (cdr xs)))))
  34.  
  35. #|filter, ki sprejme funkcijo in seznam ter vrne seznam, ki vsebuje vse elemente vhodnega seznama,
  36. za katere podana funkcija vrne resnično vrednost.|#
  37. (define (filter f xs)
  38.   (if(null? xs) null (if(equal? #t (f(car xs))) (append (list (car xs)) (filter f (cdr xs))) (filter f (cdr xs)))))
  39.  
  40.  
  41. #|zip, ki sprejme dva seznama, vrne pa seznam parov, ki je tako dolg, kot krajši izmed vhodnih seznamov.
  42. Prvi element izhodnega seznama vsebuje par prvih števil vhodnih seznamov, drugi element par drugih števil, ... |#
  43. (define (zip xs1 xs2)
  44.   (if(or (null? xs1) (null? xs2)) null  (append (list(append (list(car xs1)) (list(car xs2))))  (zip (cdr xs1) (cdr xs2) ))))
  45.  
  46.  
  47. #| range, ki sprejme tri števila, začetek, konec in korak.
  48. Vrne seznam števil, ki se začne s številom začetek, vsako naslednje število pa je za korak večje od prejšnjega.
  49. Največje število v seznamu je manjše ali enako od števila konec. Korak bo vedno pozitiven, konec pa vedno večji od začetka. |#
  50. (define (range zac kon kor)
  51.   (if(<= zac kon) (append (list zac) (range (+ zac kor) kon kor))   null))
  52.  
  53. #| everynth, ki sprejme število n in seznam, ter vrne nov seznam, ki vsebuje samo vsak n-ti element v podanem seznamu.|#
  54. (define (everynth n xs)
  55.   (let ([x n])
  56.     (define (calc x xs)
  57.       (if(null? xs) null   (if(= x 1)  (append (list(car xs)) (everynth n (cdr xs))) (calc (- x 1) (cdr xs)))))
  58.     (calc x xs)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement