Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.10 KB | None | 0 0
  1. (require(lib"mzlib/compat"))
  2. (require(lib"racket/trace"))
  3. (require(lib"racket/list"))
  4.  
  5. ;práctica con santiago
  6. (define x 3)
  7. (define y 4)
  8. (define
  9. (fun x) ;nombre de funcion y parámetros
  10. (* x 2) ;resultado de la función
  11. )
  12.  
  13. (define (fun-if x)
  14. (if (< x 4)
  15. "verdadero"
  16. "falso" ))
  17. (define (factorial n)
  18. (if (= n 0)
  19. 1
  20. (* n (factorial (- n 1) ))))
  21.  
  22. ;EJERCICIO 2
  23.  
  24. ;A) hyp que calcule la hipotenusa teniendo los lados a y b de un triángulo rectángulo.
  25. (define (hyp a b)(
  26. sqrt (+ (expt a 2) (expt b 2))))
  27.  
  28. ;B) segundo que obtenga el segundo elemento de una lista (utilice car y cdr).
  29. (define (segundo lista)
  30. (car (cdr lista)))
  31. ;(segundo '(a d c d))
  32.  
  33. ;C) div_segura que devuelva 0 si el divisor es 0 (utilice if).
  34. (define (div_segura dividendo divisor)
  35. ( if (equal? divisor 0)
  36. "El divisor no puede ser cero"
  37. (/ dividendo divisor)))
  38. ;(div_segura 9 4)
  39. ;(div_segura 9 0)
  40.  
  41. ;D) pruebe en la mitad superior de la pantalla los segmentos de código que contiene el libro de texto de la cátedra.
  42. ;don sebesta
  43.  
  44. ;E) Pregunte por su nombre y le conteste Hola nombre!.
  45.  
  46. ; ask : string -> prints output, waits for text input, returns it
  47. (define (ask question)
  48. ;(let ([ip (open-input-string "x\ny\n")])
  49. (display question)
  50. (display (string-append "hola " (read-line ))))
  51. ;(ask "cual es tu nombre?")
  52.  
  53. ;F) Pregunte por un número y en caso de ingresar otro cosa, siga preguntando, caso contrario que escriba FIN
  54. (define (ask-number)
  55. (display "Ingrese un número:")
  56. (if (number? (read))
  57. (ask-number)
  58. "FIN"))
  59. ;(ask-number)
  60.  
  61. ;EJERCICIO 3
  62. ;A) un número y determine si es positivo, negativo o nulo informando
  63. ;con estas palabras el resultado. Incluya la lectura de datos.
  64.  
  65.  
  66. (define (ingrese-numero)
  67. (display "Ingrese un número")
  68. (read))
  69.  
  70. (define (determinar-numero numero)
  71. (if (number? numero)
  72. (if(zero? numero)
  73. "Es cero"
  74. (if(positive? numero)
  75. "Es positivo"
  76. "Es negativo"))
  77. (determinar-numero (ingrese-numero))))
  78. ;(trace determinar-numero)
  79. ;(determinar-numero(ingrese-numero))
  80.  
  81. ;B) dos números y realice la suma de los números comprendidos entre ellos.
  82. (define (sumatoria-rango min max)
  83. (if( or (= min max) (= max (+ min 1)))
  84. 0
  85. (+ (+ min 1) (sumatoria-rango (+ min 1) max))))
  86. ;(trace sumatoria-rango)
  87. ;(sumatoria-rango 0 10)
  88.  
  89. ;C) un entero n y produzca una lista con los números desde 1 a n en orden ascendente.
  90. (define (ascendente base n)
  91. (if(= (+ base 1) n)
  92. n
  93. (list (+ base 1) (ascendente (+ base 1) n)) ))
  94. ;(ascendente 0 10)
  95.  
  96. (define (lista-n n)
  97. (map (lambda (number)
  98. (+ 1 number))
  99. (build-list n values)))
  100.  
  101. ;(lista-n 12)
  102.  
  103. ;D) un entero n y produzca una lista con los números desde 1 a n en orden ascendente.
  104. (define (lista-n-descendente n)
  105. (reverse (lista-n n)))
  106. ;(lista-n-descendente 12)
  107. #|(let ([x (read)]
  108. [y (read)])
  109. (displayln x)
  110. (display y))|#
  111.  
  112. ;F) una lista y cuente la cantidad de átomos.
  113. (define (cuenta-atomos lista)
  114. (if(= (length lista) 0 )
  115. 0
  116. (if (atom? (car lista))
  117. (+ 1 (cuenta-atomos (cdr lista)))
  118. 0)))
  119.  
  120. ;(cuenta-atomos '(1 2 3 5 2 '(3) 2))
  121.  
  122. ;G) un átomo y una lista e informe con verdadero o falso si el átomo está incluido en la lista,
  123. ;llame a esta función mem?
  124. (define (esta-list atomo lista )
  125. (if (member atomo lista)
  126. "Verdadero"
  127. "Falso"))
  128. ;(esta-list 7 '(1 2 3 4))
  129.  
  130. ;H) dos listas simples y devuelva la unión de las dos listas. Utilice la función mem? para evitar
  131. ;átomos repetidos.
  132.  
  133. (define (union-lista lista-1 lista-2)
  134. (cond
  135. [(eq? empty lista-1) lista-2]
  136. [(member (car lista-1) lista-2) (union-lista (cdr lista-1) lista-2)]
  137. [else (cons (car lista-1) (union-lista (cdr lista-1) lista-2))]))
  138.  
  139. ;(trace union-lista)
  140. (union-lista '(1 2 3 6) '(1 2 3 6 4 5 7 8 9 10))
  141.  
  142. ;i) un átomo y una lista y devuelva una lista donde todas las ocurrencias del átomo fueron
  143. ;quitadas (sin importar el nivel de profundidad de ocurrencia del átomo en la lista).
  144.  
  145. ;EJERCICIO 4
  146. (define (prueba atom lis)
  147. (cond
  148. ((null? lis) ())
  149. ((eq? atom (car lis)) (cons (car lis) (prueba atom (cdr lis))))
  150. (else (prueba atom (cdr lis)))
  151. )
  152. )
  153. ; Dado un atomo y una lista simple, retorna una lista que contiene tantos atomos como se hallan encontrado igual a 'atom'.
  154. ;(prueba 'a '(d a '(b a) a a))
  155.  
  156. (require(lib"compat.ss"))
  157. (define (que_hace lis)
  158. (cond
  159. ((empty? lis) 0)
  160. ((atom? (car lis))
  161. (cond
  162. ((eq? (car lis) null) (que_hace (cdr lis)))
  163. (else (add1 (que_hace (cdr lis))))
  164. )
  165. )
  166. (else (+ (que_hace (car lis)) (que_hace (cdr lis))))
  167. )
  168. )
  169. ;(trace que_hace)
  170. ;(que_hace '(1 2 3 4 5 (a b c) 6 ()))
  171.  
  172. ;(define (es-2-3-4-5 n) (and (< n 6) (> n 1)))
  173. ;(filter es-2-3-4-5 '(1 2 3 4 5))
  174.  
  175. ;EJERCICIO 5
  176. (define (misterio ls)
  177. (if (null? (cddr ls)) (cons (car ls) ())
  178. (cons (car ls) (misterio (cdr ls)))))
  179.  
  180. ;(trace misterio)
  181. ;(misterio '(1 2 3))
  182. ;EJERCICIO 6
  183. ;Escriba una función suma_todo que encuentre la suma de los números de una lista que puede
  184. ;contener sublistas anidadas de números. Pruebe con los siguientes ejemplos:
  185. (define (suma-todo lista)
  186. (if(eq? empty lista)
  187. 0
  188. (+ (car lista) (suma-todo (cdr(flatten lista))))))
  189. ;(suma-todo '(1 2 (3 4)))
  190.  
  191. (define (sumar-todo lista)
  192. ( cond
  193. ((eq? empty lista) 0)
  194. ((atom?(car lista))(+ (car lista) (sumar-todo (cdr lista))))
  195. (else (sumar-todo (car lista)))))
  196.  
  197. ;(sumar-todo '(1 2 (3 4 (1 10))))
  198.  
  199. (define (aux-ascendente i n)
  200. (if(eq? n i)
  201. (list i)
  202. (cons i (aux-ascendente (+ i 1) n))))
  203.  
  204. (define (lista-n-ascendente n)
  205. (aux-ascendente 1 n))
  206.  
  207. (trace lista-n-ascendente)
  208. (lista-n-ascendente 10)
  209. ; Cuenta pares
  210. (define (cuenta-pares list)
  211. (cond
  212. ((eq? empty list) 0)
  213. ((odd? (car list))(cuenta-pares (cdr list)))
  214. (even? (car list) (+ 1 (cuenta-pares (cdr list))))))
  215.  
  216. ;(cuenta-pares '(1 2 3 4 1 10))
  217.  
  218. (define (aplanar lista)
  219. (cond
  220. [(eq? empty lista) '()]
  221. [(atom?(car lista))(cons (car lista)(aplanar (cdr lista)))]
  222. [else ( append(aplanar(car lista)) (aplanar(cdr lista)))]))
  223.  
  224. (aplanar '(1 2 (3 4 (7 8))(5 6)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement