#lang racket ;; Primer vrstičnega komentarja. ;; - veži število 5 v spremenljivko `pet` (define pet 5) ;; pazi (define _ 4) ;; Racket je dinamično tipiziran. ;; - preveri ali je `pet` število/celo število ; ;; - veži število 1/5 v spremenljivko `petina` na dva načina. ; ;; Poglej dokumentacijo za funkcijo `/` ;; Izračunaj koliko let imaš, če si star 200000 ur. ;; - shrani vrednost meta (6-strane) kocke v spremenljivko `kocka` ;; Uporabi `random` ; ;; - veži anonimno funkcijo v spremenljivko `anonimna`, ;; ki vrne vrednost spremenljivke `kocka` ; ;; nekaj dodantih primerov anonimnih funkcij (define f0 (λ () 1)) (define f1 (λ (a) (- a))) (define f2 (λ (a b) (+ a b))) (define f3 (λ a (rest a))) (define f4 (λ _ -1)) (define f5 (λ (a . _) (+ a a))) (define f6 (λ (a _ b . c) (+ a b))) ;; - definiranj funkcijo vrži-kocko (define (vrzi-kocko) (random 1 7)) ;; - definiraj funkcijo `add`, ki zna sešteti dve števili ; ;; - Kakšna je razlika med `addc`, `addc2`, `addc3`? (define addc (λ (x) (λ (y) (+ x y)))) (define (addc2) (λ (x) (λ (y) (+ x y)))) (define ((addc3 x) y) (+ x y)) (define ((addc4 x y) z) (+ x y z)) ;; - definiranj funkcijo `n-krat-vrži-kocko` (vrne vsoto n-tih metov) ; ;; - definiranj funkcijo `seznam-n-metov` (vrne seznam n-tih metov) ;; Prazen seznam: '(), null, (list) ;; Seznam z enim elementom `e`: (cons e null), (list e). ;; Seznam je zaporedje parov. ; ;; alternativa (define (seznam-n-metov2 n) (build-list n (lambda (_) (vrzi-kocko)))) ;; - definiranj funkcijo `n-krat-vrži-kocko2` z uporabo ;; funkcije `seznam-n-metov` (uporabi `apply` ali `foldl`) ; ;; - definiranj funkcijo `rev` z uporabo akumulatorjev ; define ; ; letrec ; ; let ; ; foldl ; ; match ; ;; - definiranj funkcijo `preštej`, ;; ki prešteje število argumentov ; ; ; ;; - definiranj funkcijo `skalarni-produkt`: ;; (skalarni-produkt (list 1 -1 1) (list 2 -4 -4)) -> 2 ; ;; - definiranj funkcijo `binary`: ;; (binary 0) -> 0 ;; (binary 1 0 1 0) -> 10 ;; (binary 1 0 1 0 1 0) -> 42 ; ;; definiranj funkcijo `tetration a n` ;; https://en.wikipedia.org/wiki/Tetration ; ;; i^0, i^i, i^(i^i), ... (tetration i n) ;; risanje grafov ; (require plot) ; (parameterize ([plot-width 800] ; [plot-height 800] ; [plot-x-label "re(x)"] ; [plot-y-label "im(x)"]) ; (define xs (build-list 40 (λ (i) (tetration 0+i i)))) ; (plot (points (map (λ (a) (vector (real-part a) (imag-part a))) xs)) ; #:x-min -0.1 #:x-max 1.1 ; #:y-min -0.1 #:y-max 1.1))