Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 2.00 KB | None | 0 0
  1. #lang racket
  2.  
  3. ;; kartkówka
  4.  
  5.  
  6. (define/contract (sum args)
  7.   (-> (listof number?) number?)
  8.   (if (null? args)
  9.       0
  10.       (apply + args)))
  11.  
  12.  
  13. ;; ćw. 1
  14.  
  15. (define/contract (suffixes xs)
  16.   (let ((a (new-∀/c 'a)))
  17.     (-> (listof a) (listof (listof a))))
  18.   (if (null? xs)
  19.       (list '())
  20.       (cons xs (suffixes (cdr xs)))))
  21.  
  22. ;; ćw. 2
  23.  
  24. (define/contract (dist x y)
  25.   (-> number? number? number?)
  26.   (abs (- x y)))
  27.  
  28. (define/contract (average x y)
  29.   (-> number? number? number?)
  30.   (/ (+ x y) 2))
  31.  
  32. (define/contract (square x)
  33.   (-> number? number?)
  34.   (* x x))
  35.  
  36. (define/contract (sqrt x)
  37.   ;(->i ([x positive?])
  38.        ;[result positive?]
  39.        ;#:post (result x)
  40.        ;(< (abs (- x (square result))) 0.0001))
  41.   (->i ([x positive?])
  42.        [result (x) (and/c positive?
  43.                           (λ (y) (< (dist (square y) x) 0.001)))])
  44.        
  45.   (define (improve approx)
  46.     (average (/ x approx) approx))
  47.   (define (good-enough? approx)
  48.     (< (dist x (square approx)) 0.0001))
  49.   (define (iter approx)
  50.     (cond
  51.       [(good-enough? approx) approx]
  52.       [else                  (iter (improve approx))]))
  53.  
  54.   (iter 1.0))
  55.  
  56. ;; ćw. 3
  57.  
  58. (define/contract (filter p? xs)
  59.   (let ((a (new-∀/c 'a)))
  60.     (and/c
  61.      (-> (-> a boolean?) (listof a) (listof a))
  62.      (->i ([p? (-> any/c boolean?)]
  63.            [xs (listof any/c)])
  64.           [result (listof any/c)]
  65.           #:post (p? result)
  66.           (andmap p? result))))
  67.   (cond [(null? xs) null]
  68.         [(p? (car xs)) (cons (car xs) (filter p? (cdr xs)))]
  69.         [else (filter p? (cdr xs))]))
  70.  
  71. ;; ćw. 4
  72.  
  73. (define-signature  monoid^
  74.   (( contracted
  75.      [elem?    (-> any/c  boolean ?)]
  76.      [neutral  elem?]
  77.      [oper     (-> elem? elem? elem?)])))
  78.  
  79. ;; ćw. 5
  80.  
  81. ;; ćw. 6
  82.  
  83. (: prefixes (All (A) (-> (Listof A) (Listof (Listof A)))))
  84. (define (prefixes xs)
  85.   (if (null? xs)
  86.       (cons null null)
  87.       (cons null (map (lambda ([x : (Listof A)]) (cons (car xs) x))
  88.                       (prefixes (cdr xs))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement