tomasfdel

Racket Práctica 6

Jun 16th, 2016
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 3.20 KB | None | 0 0
  1. EJERCICIO 5)
  2.  
  3. ; cuadrados: ListaN -> ListaN
  4. ; Genera una lista con los cuadrados de cada elemento de una lista de números
  5. (check-expect (cuadrados empty) empty)
  6. (check-expect (cuadrados (list 1 2 3 4)) (list 1 4 9 16))
  7. (define (cuadrados l) (map sqr l))
  8.  
  9. ;sumcuad: ListaN -> Number
  10. ; Calcula la suma de los cuadrados de una lista de números.
  11. (check-expect (sumcuad empty) 0)
  12. (check-expect (sumcuad (list 1)) 1)
  13. (check-expect (sumcuad (list 1 2 3)) 14)
  14. (define (sumcuad l) (foldr + 0 (cuadrados l)) )
  15.  
  16.  
  17.  
  18. EJERCICIO 6)
  19.  
  20. ; distancia: Posn -> Number
  21. ; Calcula la distancia al origen de coordenadas de un punto.
  22. (check-expect (distancia (make-posn 0 0)) 0)
  23. (check-expect (distancia (make-posn -3 4)) 5)
  24. (define (distancia punto) (sqrt (+ (sqr (posn-x punto)) (sqr (posn-y punto)) )) )
  25.  
  26.  
  27. ;sumdist: ListPosn -> Number
  28. ; Suma las distancias al origen de una lista de coordenadas.
  29. (check-expect (sumdist empty) 0)
  30. (check-expect (sumdist (list (make-posn 0 0) (make-posn -3 4))) 5)
  31. (define (sumdist lista) (foldr + 0 (map distancia lista)) )
  32.  
  33.  
  34.  
  35. EJERCICIO 7)
  36.  
  37. ;multPos: ListN -> Number
  38. ; Multiplica los números positivos de una lista de números, devolviendo 1 en caso que esté vacía o ninguno cumpla esa condición.
  39. (check-expect (multPos empty) 1)
  40. (check-expect (multPos (list -3 -4 -5 0)) 1)
  41. (check-expect (multPos (list 3 -2 4 0 1 -5)) 12)
  42. (define (multPos lista) (foldr * 1 (filter positive? lista)) )
  43.  
  44.  
  45.  
  46. EJERCICIO 8)
  47.  
  48. ;sumAbs: ListN -> Number
  49. ; Calcula la suma de los valores absolutos de una lista de números.
  50. (check-expect (sumAbs empty) 0)
  51. (check-expect (sumAbs (list 0 -1 1)) 2)
  52. (check-expect (sumAbs (list 3 -2 4 0 1 -5)) 15)
  53. (define (sumAbs lista) (foldr + 0 (map abs lista)) )
  54.  
  55.  
  56.  
  57. EJERCICIO 9)
  58.  
  59. ; no-negativo?: Number -> Bool
  60. ; Determina si un número es no negativo.
  61. (check-expect (no-negativo? 0) #t)
  62. (check-expect (no-negativo? 5) #t)
  63. (check-expect (no-negativo? -1) #f)
  64. (define (no-negativo? n) (not (negative? n) ) )
  65.  
  66.  
  67. ; raices: ListN -> ListN
  68. ; Forma una lista con las raíces cuadradas de los números no negativos de una lista.
  69. (check-expect (raices empty) empty)
  70. (check-expect (raices (list -1 -2)) empty)
  71. (check-expect (raices (list 16 -4 9 0)) (list 4 3 0))
  72. (define (raices lista) (map sqrt (filter no-negativo? lista) ) )
  73.  
  74.  
  75.  
  76. EJERCICIO 10)
  77.  
  78. ; area: Image -> Number
  79. ; Calcula el área de una imagen
  80. (check-expect (area (circle 10 "solid" "blue")) 400)
  81. (define (area imagen) (* (image-height imagen) (image-width imagen) ) )
  82.  
  83.  
  84. ;gorda?: Image -> Bool
  85. ; Determina si una imagen es gorda.
  86. (check-expect (gorda? (circle 10 "solid" "blue")) #f)
  87. (check-expect (gorda? (rectangle 20 10 "solid" "blue")) #t)
  88. (define (gorda? imagen) (> (image-width imagen) (image-height imagen)) )
  89.  
  90.  
  91. ;sag: ListImage -> Number
  92. ; Calcula la suma de las áreas de las imágenes gordas de una lista.
  93. (check-expect (sag empty) 0)
  94. (check-expect (sag (list (circle 10 "solid" "blue"))) 0)
  95. (check-expect (sag (list (circle 20 "solid" "red")
  96.                          (rectangle 40 20 "solid" "blue")
  97.                          (rectangle 10 20 "solid" "yellow")
  98.                          (rectangle 30 20 "solid" "green"))) 1400)
  99. (define (sag lista) (foldr + 0 (map area (filter gorda? lista))) )
Add Comment
Please, Sign In to add comment