Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;.
- ;;Autor: Carlos A Delgado S
- ;;Fecha: 01 de Febrero de 2021
- ;;Contrato: suma-lista: lista de números -> numero
- ;;Propósito: Esta función recibe una lista con 4 números y nos retorna su suma
- ;;Ejemplos
- ;;(cons 1 (cons 2 (cons 3 (cons 4 empty)))) 10
- ;;(cons 2 (cons 4 (cons 6 (cons 8 empty)))) 20
- ;;(cons 5 (cons 10 (cons 15 (cons 20 empty)))) 50
- (define (suma-lista lst)
- (if
- (and (cons? lst) (= (length lst) 4))
- (+
- (first lst) ;;Primer elemento
- (first (rest lst)) ;;Segundo elemento
- (first (rest (rest lst))) ;;Tercer elemento
- (first (rest (rest (rest lst)))) ;;Cuarto elemento
- )
- (error "Debe ingresar una lista de tamaño 4")
- )
- )
- ;;Pruebas
- (check-expect (suma-lista (cons 1 (cons 2 (cons 3 (cons 4 empty))))) 10)
- (check-expect (suma-lista (cons 2 (cons 4 (cons 6 (cons 8 empty))))) 20)
- (check-expect (suma-lista (cons 5 (cons 10 (cons 15 (cons 20 empty))))) 50)
- (check-error (suma-lista (cons 0 (cons 5 (cons 10 (cons 15 (cons 20 empty)))))))
- ;;Autor: Carlos A Delgado S
- ;;Fecha: 01 de Febrero de 2021
- ;;Contrato: hay-mula?: lista de símbolos -> booleano
- ;;Propósito: Esta función indica si en una lista de cuatro símbolos está la palabra 'mula
- ;;Ejemplos
- ;;(cons 'perro (cons 'mula (cons 'gato (cons 'lobo empty)))) #true
- ;;(cons 'perro (cons 'caballo (cons 'gato (cons 'lobo empty)))) #false
- (define (hay-mula? lst)
- (if
- (and (cons? lst) (= (length lst) 4))
- (cond
- [(symbol=? (first lst) 'mula) #true]
- [(symbol=? (first (rest lst)) 'mula) #true]
- [(symbol=? (first (rest (rest lst))) 'mula) #true]
- [(symbol=? (first (rest (rest (rest lst)))) 'mula) #true]
- [else #false]
- )
- (error "Debe ingresar una lista de tamaño 4")
- ))
- (check-expect (hay-mula? (cons 'perro (cons 'mula (cons 'gato (cons 'lobo empty))))) #true)
- (check-expect (hay-mula? (cons 'perro (cons 'caballo (cons 'gato (cons 'lobo empty))))) #false)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement