Advertisement
Guest User

p1 lpp

a guest
Feb 10th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 5.53 KB | None | 0 0
  1.  
  2. #lang r6rs
  3. (import (rnrs)
  4.         (schemeunit ))
  5. ;;Ejercicio 1 : binario-a-decimal
  6.  
  7. ;;a)
  8.  
  9. (define (binario-a-decimal b3 b2 b1 b0)
  10.        (+ (* b3(expt 2 3))
  11.           (* b2(expt 2 2))
  12.           (* b1(expt 2 1))
  13.           (* b0(expt 2 0))
  14.        )
  15.  
  16. )
  17. (display "Probando binario-a-decimal\n")
  18. (check-equal? (binario-a-decimal 1 1 1 1) 15)
  19. (check-equal? (binario-a-decimal 0 1 1 0) 6)
  20. (check-equal? (binario-a-decimal 0 0 1 0) 2)
  21.  
  22. ;;b) binario-a-hexadecimal
  23.  
  24. (define (binario-a-hexadecimal b3 b2 b1 b0)
  25.   (if (> (binario-a-decimal b3 b2 b1 b0) 9)
  26.       (integer->char (+ (binario-a-decimal b3 b2 b1 b0) (- (char->integer #\A) 10)))
  27.       (integer->char (+ (binario-a-decimal b3 b2 b1 b0)(char->integer #\0))))
  28.  
  29. )
  30. (display "Probando binario-a-hexadecimal\n")
  31. (check-equal? (binario-a-hexadecimal 1 1 1 1) #\F)
  32. (check-equal? (binario-a-hexadecimal 0 1 1 0) #\6)
  33. (check-equal? (binario-a-hexadecimal 1 0 1 0) #\A)
  34.  
  35. ;;Ejercicio 2 : (menor-de-tres n1 n2 n3)
  36. ;;a)
  37.  
  38. (define (menor-de-tres n1 n2 n3)
  39.   (if (< n1 n2)
  40.       (if (< n1 n3) n1 n3)
  41.       (if (< n2 n3) n2 n3))
  42.  
  43.   )
  44. (display "Probando menor-de-tres\n")
  45. (check-equal? (menor-de-tres 1 2 3) 1)
  46. (check-equal? (menor-de-tres 4 2 7) 2)
  47. (check-equal? (menor-de-tres 8 3 1) 1)
  48.  
  49. ;;b) (menor-de-tres-v2 n1 n2 n3)
  50.  
  51. (define (menor x y)
  52.   (if (< x y) x y)
  53.   )
  54.  
  55. (define (menor-de-tres-v2 n1 n2 n3)
  56.   (menor (menor n1 n2 ) (menor n2 n3))
  57.  
  58.   )
  59. (display "Probando menor-de-tres-v2\n")
  60. (check-equal? (menor-de-tres-v2 1 2 3) 1)
  61. (check-equal? (menor-de-tres-v2 4 2 7) 2)
  62. (check-equal? (menor-de-tres-v2 8 3 1) 1)
  63.  
  64. ;;Ejercicio 3
  65.  
  66. ;                                        
  67. ; (define (f x y)
  68. ;     (+ x y))
  69. ;
  70. ; (define (g x)
  71. ;     (* 2 x))
  72. ;
  73. ; (f (g (+ 2 1)) (+ 1 1))
  74. ;
  75. ; Normal :
  76. ; (f (g (+ 2 1)) (+ 1 1))r4
  77. ; (+ (* 2 (+ 2 1)) (+ 1 1))r4
  78. ; (+(* 2 3) 2)r3
  79. ; (+ 6 2)r3
  80. ; 8
  81. ;
  82. ; Aplicativo:
  83. ; (f (g (+ 2 1)) (+ 1 1))r3
  84. ; (f (g 3) 2) r4
  85. ; (f (* 2 3) 2) r3
  86. ; (f 6 2)r4
  87. ; (+ 6 2)r3
  88. ; 8
  89. ;
  90.  
  91.  
  92.  
  93. ;;Ejercicio 4 (tirada-ganadora t1 t2)
  94.  
  95. (define (tirada-ganadora t1 t2)
  96.   (cond ( (< (abs(- 7 (+ (car t1) (cdr t1)))) (abs(- 7 (+ (car t2) (cdr t2))))) 1)
  97.         ( (> (abs(- 7 (+ (car t1) (cdr t1)))) (abs(- 7 (+ (car t2) (cdr t2))))) 2)
  98.         ( (= (abs(- 7 (+ (car t1) (cdr t1)))) (abs(- 7 (+ (car t2) (cdr t2))))) 0)
  99.    )
  100. )
  101.  
  102. (display "Probando tirada-ganadora\n")
  103.  
  104. (check-equal?  (tirada-ganadora (cons 3 3) (cons 1 6))  2)
  105. (check-equal?  (tirada-ganadora (cons 1 5) (cons 2 2))  1)
  106. (check-equal?  (tirada-ganadora (cons 6 2) (cons 3 3))  0)
  107.  
  108. ;;Ejercicio 5: juego de guerra de barcos
  109.  
  110. (define(kmh-a-ms v)
  111. (/ (* 1000 v) 3600)
  112. )
  113.  
  114. (display "Probando kmh-a-ms\n")
  115.  
  116. (check-equal?  (kmh-a-ms 90) 25)
  117.  
  118. (define (calcula-alcance v)
  119.   (* (kmh-a-ms v) (/ 5000 (expt (kmh-a-ms v) 2)) )
  120. )
  121. (define (calcula-distancia x1 y1 x2 y2)
  122.   (sqrt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)))
  123. )
  124.  
  125. (define (dentro-alcance? x1 y1 x2 y2 v)
  126.   (if (< (- (calcula-alcance v) (calcula-distancia x1 y1 x2 y2)) 0) #f #t)
  127. )
  128.  
  129. (display "Probando dentro-alcance? \n")
  130.  
  131. (check-equal?  (dentro-alcance?  0 0 500 500 30) #f)
  132. (check-equal?  (dentro-alcance?  100 200 500 500 20) #t)
  133.  
  134.  
  135. ;;Ejercicio 6:tipo-triangulo
  136.  
  137.  
  138. (define epsilon 0.0001)
  139.  
  140. (define (iguales-reales? x y)
  141.   (< (abs (- x y)) epsilon))
  142.  
  143. (define (tipo-triangulo a b c)
  144. (cond
  145.   ((equal? (and (iguales-reales? (calcula-distancia (car a) (cdr a) (car b) (cdr b)) (calcula-distancia (car b) (cdr b) (car c) (cdr c) ) ) (iguales-reales? (calcula-distancia (car a) (cdr a) (car c) (cdr c)) (calcula-distancia (car b) (cdr b) (car c) (cdr c) ) ) )
  146.             #t) "equilatero")
  147.   ((or(or
  148.           (equal? (and (iguales-reales? (calcula-distancia (car a) (cdr a) (car b) (cdr b)) (calcula-distancia (car b) (cdr b) (car c) (cdr c) ) ) (equal?(iguales-reales? (calcula-distancia (car a) (cdr a) (car c) (cdr c)) (calcula-distancia (car b) (cdr b) (car c) (cdr c) ) ) #f))
  149.             #t)
  150.  
  151.           (equal? (and (iguales-reales? (calcula-distancia (car a) (cdr a) (car c) (cdr c)) (calcula-distancia (car b) (cdr b) (car c) (cdr c) ) ) (equal?(iguales-reales? (calcula-distancia (car a) (cdr a) (car b) (cdr b)) (calcula-distancia (car b) (cdr b) (car c) (cdr c) ) ) #f))
  152.             #t)
  153.          
  154.           )
  155.  
  156.          
  157.       (equal? (and (iguales-reales? (calcula-distancia (car a) (cdr a) (car c) (cdr c)) (calcula-distancia (car a) (cdr a) (car b) (cdr b) ) ) (equal?(iguales-reales? (calcula-distancia (car a) (cdr a) (car b) (cdr b)) (calcula-distancia (car b) (cdr b) (car c) (cdr c) ) ) #f))
  158.             #t)
  159.       )
  160.    "isosceles")
  161.  
  162.   (else "escaleno")
  163.  )
  164. )
  165.  
  166.  
  167. (display "Probando tipo-triangulo \n")
  168.  
  169. (check-equal?  (tipo-triangulo (cons 1 1) (cons  1 6) (cons 6 1))"isosceles")
  170. (check-equal?  (tipo-triangulo (cons -2 3) (cons  2 6) (cons 5 3)) "escaleno")
  171. (check-equal?  (tipo-triangulo (cons -3 0) (cons  3 0) (cons 0 5.1961)) "equilatero")
  172.  
  173.  
  174. ;;Ejercicio 7 : calculadora
  175.  
  176.  
  177. (define (multiplicar lista)
  178.   (* (car lista) (cadr  lista))
  179.   )
  180.  
  181. (display "Probando multiplicar \n")
  182.  
  183. (define (dividir lista)
  184.   (/ (car lista) (cadr lista))
  185.   )
  186.  
  187. (define (sumar lista)
  188.   (+ (car lista) (cadr lista))
  189.   )
  190.  
  191. (define (restar lista)
  192.   (- (car lista) (cadr lista))
  193.   )
  194.  
  195. (check-equal?  (multiplicar  (list 2 3)) 6)
  196.  
  197. (define (calculadora lista)
  198.   (cond ((equal? (car lista) #\+) (sumar (cdr lista)))
  199.       ((equal? (car lista) #\-) (restar (cdr lista)))
  200.       ((equal? (car lista) #\*) (multiplicar (cdr lista)))
  201.       ((equal? (car lista) #\/) (dividir (cdr lista)))
  202.   )
  203.  
  204.  
  205. )
  206.  
  207. (check-equal?  (calculadora  (list #\/ 4 4)) 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement