Durante esta actividad, los alumnos serán capaces de:
Esta actividad se debe realizar y entregar por equipos.
En un mismo archivo fuente llamado recursion.rkt
, escribe el código de Racket con la solución a los siguientes problemas de programación.
TODOS LOS PROBLEMAS SE DEBEN RESOLVER USANDO RECURSIÓN.
No olvides colocar la matrícula y nombre de todos los miembros del equipo en un comentario en la parte superior de tu archivo fuente.
El procedimiento ultimo
regresa el último elemento de una lista que recibe como entrada. La lista de entrada debe tener al menos un elemento. Por ejemplo:
(ultimo '(1 2 3)) ⇒ 3 (ultimo '(1)) ⇒ 1 (ultimo '(4 5 6 7 8)) ⇒ 8
El procedimiento sin-ultimo
regresa una lista con los mismos elementos de una lista que recibe como entrada pero sin el último elemento. La lista de entrada debe tener al menos un elemento. Por ejemplo:
(sin-ultimo '(1 2 3)) ⇒ '(1 2) (sin-ultimo '(1)) ⇒ '() (sin-ultimo '(4 5 6 7 8)) ⇒ '(4 5 6 7)
El procedimiento replica
toma un número n
y cualquier dato x
como entradas. Regresa una lista que contiene n
copias de x
. Por ejemplo:
(replica 2 3) ⇒ '(3 3) (replica 5 #t) ⇒ '(#t #t #t #t #t) (replica 3 '(1 2 3)) ⇒ '((1 2 3) (1 2 3) (1 2 3)) (replica 0 '(1 2 3)) ⇒ '()
El procedimiento enlista
envuelve entre paréntesis cada elemento del nivel superior de la lista que toma como entrada. Por ejemplo:
(enlista '(1 2 3)) ⇒ '((1) (2) (3)) (enlista '((1 2 3) 4 (5))) ⇒ '(((1 2 3)) (4) ((5))) (enlista '()) ⇒ '()
El procedimiento mezcla
devuelve una lista que es el resultado de intercalar en orden ascendente a los elementos de dos listas de números ordenados que recibe como entrada. Por ejemplo:
(mezcla '(1 4) '(1 2 8)) ⇒ '(1 1 2 4 8) (mezcla '() '()) ⇒ '() (mezcla '(35 62 81 90 91) '(3 83 85 90)) ⇒ '(3 35 62 81 83 85 90 90 91)
El procedimiento prefijo?
recibe dos listas a
y b
, devuelve #t
si a
es prefijo de b
o #f
en caso contrario. Por ejemplo:
(prefijo? '() '(a b c d)) ⇒ #t (prefijo? '(a b c) '(a b c d)) ⇒ #t (prefijo? '(a b c d) '(a b c d)) ⇒ #t (prefijo? '(a b c d e) '(a b c d)) ⇒ #f (prefijo? '(x y z) '(a b c d)) ⇒ #f
El procedimiento inserta
toma dos entradas: un número n
y una lista lst
de números en orden ascendente. Devuelve una nueva lista con los mismos elementos de lst
pero insertando n
en su lugar correspondiente. Por ejemplo:
(inserta 14 '()) ⇒ '(14) (inserta 4 '(5 6 7 8)) ⇒ '(4 5 6 7 8) (inserta 5 '(1 3 6 7 9 16)) ⇒ '(1 3 5 6 7 9 16) (inserta 10 '(1 5 6)) ⇒ '(1 5 6 10)
El procedimiento ordena-por-insercion
recibe una lista desordenada de números como entrada y devuelve una nueva lista con los mismos elementos pero ordenados de manera ascendente. Se debe utilizar el procedimiento inserta
definida en el ejercicio anterior. Por ejemplo:
(ordena-por-insercion '()) ⇒ '() (ordena-por-insercion '(4 3 6 8 3 0 9 1 7)) ⇒ '(0 1 3 3 4 6 7 8 9) (ordena-por-insercion '(1 2 3 4 5 6)) ⇒ '(1 2 3 4 5 6) (ordena-por-insercion '(5 5 5 1 5 5 5)) ⇒ '(1 5 5 5 5 5 5)
To deliver the recursion.rkt
file, please provide the following information:
Solo es necesario que lo entregue en miembro del equipo.