Advertisement
cardel

FDP Ejercicio 2 08 de Agosto

Aug 8th, 2020 (edited)
1,980
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 2.89 KB | None | 0 0
  1. ;.
  2.  
  3. ;;Autor: Carlos A Delgado
  4. ;;Fecha: 08 de Agosto de 2020
  5. ;;Contrato: buscar-mayor: lista de números -> numero
  6. ;;Propósito: Dada una lista de 5 números retornar el mayor
  7. ;;Ejemplos
  8. ;;(buscar-mayor (cons 1 (cons 2 (cons 3 (cons 4 (cons 5 empty))))) ) 5
  9. ;;(buscar-mayor (cons 15 (cons 20 (cons 83 (cons 44 (cons 5 empty))))) ) 83
  10. (define (buscar-mayor lst)
  11.   (cond
  12.     [(not (list? lst)) (error "El argumento de entrada debe ser una lista")]
  13.     [(and
  14.       (> (first lst) (first (rest lst)))
  15.       (> (first lst) (first (rest (rest lst))))
  16.       (> (first lst) (first (rest (rest (rest lst)))))
  17.       (> (first lst) (first (rest (rest (rest (rest lst)))))))
  18.      (first lst)]
  19.     [(and
  20.       (> (first (rest lst)) (first (rest (rest lst))))
  21.       (> (first (rest lst)) (first (rest (rest (rest lst)))))
  22.       (> (first (rest lst)) (first (rest (rest (rest (rest lst)))))))
  23.      (first (rest lst))]
  24.     [(and
  25.       (> (first (rest (rest lst))) (first (rest (rest (rest lst)))))
  26.       (> (first (rest (rest lst))) (first (rest (rest (rest (rest lst)))))))
  27.      (first (rest (rest lst)))]
  28.     [(>
  29.       (first (rest (rest (rest lst)))) (first (rest (rest (rest (rest lst))))))
  30.      (first (rest (rest (rest lst))))]
  31.     [else
  32.      (first (rest (rest (rest (rest lst)))))]
  33.     ))
  34.  
  35. (check-expect (buscar-mayor (cons 1 (cons 2 (cons 3 (cons 4 (cons 5 empty))))) ) 5)
  36. (check-expect (buscar-mayor (cons 15 (cons 20 (cons 83 (cons 44 (cons 5 empty))))) ) 83)
  37.  
  38. ;;Autor: Carlos A Delgado
  39. ;;Fecha: 08 de Agosto de 2020
  40. ;;Contrato: buscar-simbolo: lista de simbolos, simbolo -> booleano
  41. ;;Propósito: Indicar si un símbolo está en una lista
  42. ;;Ejemplos
  43. ;;(buscar-simbolo (cons 'a (cons 'b (cons 'c (cons 'd (cons 'e empty))))) 'c) #T
  44. ;;(buscar-simbolo (cons 'a (cons 'b (cons 'c (cons 'd (cons 'e empty))))) 'f) #F
  45. (define (buscar-simbolo lst sym)
  46.   (cond
  47.     [(not (and (cons? lst) (symbol? sym))) (error "Debe ingresar una de lista de símbolos y un simbolo")]
  48.     [(equal? sym (first lst)) #T]
  49.     [(equal? sym (first (rest lst))) #T]
  50.     [(equal? sym (first (rest (rest lst)))) #T]
  51.     [(equal? sym (first (rest (rest (rest lst))))) #T]
  52.     [(equal? sym (first (rest (rest (rest (rest lst)))))) #T]
  53.     [else #F]
  54.     ))
  55.  
  56. (check-expect (buscar-simbolo (cons 'a (cons 'b (cons 'c (cons 'd (cons 'e empty))))) 'c) #T)
  57. (check-expect (buscar-simbolo (cons 'a (cons 'b (cons 'c (cons 'd (cons 'e empty))))) 'f) #F)
  58.  
  59. ;;Recursión
  60.  
  61. ;;Autor: Carlos A Delgado S
  62. ;;Fecha: 08 de Agosto de 2020
  63. ;;Contrato: factorial: numero -> numero
  64. ;;Propósito: Calcular n!
  65. ;;(fact 5) 120
  66. ;;(fact 8) 40320
  67. (define (fact n)
  68.   (cond
  69.     [(not (number? n)) (error "La entrada debe ser un número")]
  70.     [(= n 0) 1] ;;Caso base o trivial
  71.     [else (* n (fact (- n 1)))] ;;Caso recursivo
  72.     ))
  73.  
  74. (check-expect (fact 5) 120)
  75. (check-expect (fact 8) 40320)
  76.  
  77.                                                          
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement