Advertisement
dgulczynski

mp3

Mar 6th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 4.66 KB | None | 0 0
  1. #lang racket
  2.  
  3. (define (gcd x y)
  4.   (cond ((= y 0) x)
  5.         (else (gcd y (modulo x y)))))
  6. #|   pary
  7. (define (make-rat n d)
  8.   (let ([g (gcd n d)])
  9.     (cons (/ n g) (/ d g))))
  10.  
  11. (define (rat-num x) (car x))
  12.  
  13. (define (rat-den x) (cdr x))
  14.  
  15. (define (rat? x)
  16.   (and(pair? x)
  17.       (not (= (rat-den x) 0))
  18.       (= x (gcd (rat-num x) (rat-den x)))))
  19. |#
  20. (define (make-rat n d)
  21.   (let ([g (gcd n d)])
  22.     (list (/ n g) (/ d g))))
  23.  
  24. (define (rat-num x) (car x))
  25.  
  26. (define (rat-den x) (car (cdr x)))
  27.  
  28. (define (rat? x)
  29.   (and(pair? x)
  30.       (not (= (rat-den x) 0))
  31.       (= 1 (gcd (rat-num x) (rat-den x)))
  32.       (null? (cdr (cdr x)))))
  33.  
  34. (define (print-rat x)
  35.   (newline)
  36.   (display (rat-num x))
  37.   (display "/")
  38.   (display (rat-den x)))
  39.  
  40. (define (add-rat x y)
  41.   (make-rat (+ (* (rat-num x) (rat-den y))
  42.                (* (rat-num y) (rat-den x)))
  43.             (* (rat-den x) (rat-den y))))
  44. (define (sub-rat x y)
  45.   (make-rat (- (* (rat-num x) (rat-den y))
  46.                (* (rat-num y) (rat-den x)))
  47.             (* (rat-den x) (rat-den y))))
  48. (define (mul-rat x y)
  49.     (make-rat (* (rat-num x) (rat-num y))
  50.               (* (rat-den x) (rat-den y))))
  51. (define (div-rat x y)
  52.     (make-rat (* (rat-num x) (rat-den y))
  53.               (* (rat-den x) (rat-num y))))
  54. ;; zad 2
  55. ( define ( display-point p )
  56. ( display "(")
  57. ( display ( point-x p ) )
  58. ( display ", ")
  59. ( display ( point-y p ) )
  60. ( display ")") )
  61. ( define ( display-vect v )
  62. ( display "[")
  63. ( display-point ( vect-begin v ) )
  64. ( display ", ")
  65. ( display-point ( vect-end v ) )
  66. ( display "]") )
  67.  
  68. (define (make-point x y)
  69.   (cons x y))
  70. (define (point? p)
  71.   (pair? p))
  72. (define (point-x p)
  73.   (car p))
  74. (define (point-y p)
  75.   (cdr p))
  76. (define (make-vect p1 p2)
  77.   (cons p1 p2))
  78. (define (vect-begin v)
  79.   (car v))
  80. (define (vect-end v)
  81.   (cdr v))
  82. (define (vect? v)
  83.   (and (pair? v)
  84.        (point? (vect-begin v))
  85.        (point? (vect-end v))))
  86. (define (vect-length v)
  87.   (let ((x (- (point-x (vect-begin v)) (point-x (vect-end v))))
  88.         (y (- (point-y (vect-begin v)) (point-y (vect-end v)))))
  89.     (sqrt (+ (* x x) (* y y)))))
  90. (define (vect-scale v k)
  91.   (let ((b (vect-begin v))
  92.         (e (vect-end v)))
  93.     (make-vect b (make-point
  94.             (+ (point-x b) (* k (- (point-x e) (point-x b))))
  95.             (+ (point-y b) (* k (- (point-y e) (point-y b))))))))
  96. (define (point-translate p t)
  97.   (make-point (+ (point-x p) (point-x t))
  98.               (+ (point-y p) (point-y t))))
  99. (define (vect-translate v p)
  100.   (make-vect (point-translate (vect-begin v ) p)
  101.              (point-translate (vect-end v) p)))
  102. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  103. ;;zad 3
  104. (define (make-vect3 p a l)
  105.   (cons p (cons a l)))
  106. (define (vect-length3 v)
  107.   (cdr (cdr v)))
  108. (define (vect-scale3 v k)
  109.   (make-vect3 (car v) (car (cdr v)) (* k (cdr (cdr v)))))
  110. (define (vect-translate3 v p)
  111.   (make-vect3 (point-translate (car v p)) (car (cdr v)) (cdr (cdr v))))
  112. (define (vect-end3 v)
  113.   (make-point (+ (point-x (car v)) (* (sin (car (cdr v))) (vect-length3 v)))
  114.               (+ (point-y (car v)) (* (cos (car (cdr v))) (vect-length3 v)))))
  115. ( define ( display-vect3 v )
  116. ( display "[")
  117. ( display-point ( vect-begin v ) )
  118. ( display ", ")
  119. ( display-point ( vect-end3 v ) )
  120. ( display "]") )
  121.  
  122. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  123. ;;zad 4
  124.  
  125. (define (append xs ys)
  126.   (if (null? xs)
  127.       ys
  128.       (cons (car xs) (append (cdr xs) ys))))
  129.  
  130. (define (reverse-iter l)
  131.   (define (iter ok todo)
  132.     (if (null? todo)
  133.         ok
  134.         (iter (cons (car todo) ok) (cdr todo))))
  135.   (iter null l))
  136.  
  137. (define (reverse l)
  138.   (if (null? l)
  139.       null
  140.       (append (reverse (cdr l)) (list (car l)))))
  141.  
  142. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  143. ;;zad 5
  144. (define (insert xs n)
  145.   (cond [(null? xs) (list n)]
  146.         [(< n (car xs)) (cons n xs)]
  147.         [else (cons (car xs) (insert (cdr xs) n))]))
  148.  
  149. (define (insert-iter xs n)
  150.   (define (iter front back)
  151.     (cond [(null? back) (iter front (list n))]
  152.           [(< n (car back)) (iter front (cons n back))]
  153.           [else (iter (cons (car back) front) (cdr back))]))
  154.   (iter null xs))
  155.  
  156. (define (insert-sort xs)
  157.   (define (iter ok todo)
  158.     (if (null? todo)
  159.         ok
  160.         (iter (insert ok (car todo)) (cdr todo))))
  161.   (iter (list (car xs)) (cdr xs)))
  162. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  163. ;;zad 6
  164. (define (insert-at l x at)
  165.   (if (= at 0)
  166.       (cons x l)
  167.       (if (null? l)
  168.           (cons x null)
  169.           (cons (car l) (insert-at (cdr l) x (- at 1))))))
  170. (define (length xs)
  171.   (if (null? xs)
  172.       0
  173.       (+ 1 (length (cdr xs)))))
  174.  
  175. #|
  176. (define (permi xs)
  177.   (if (null? xs)
  178.       null
  179.       (
  180. |#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement