Los camiones que pasaron
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- listas
- comparaciones
- condicionales
Enunciado
Don Efraín vende periódicos en la esquina y, para no aburrirse, anota el número de cada camión que pasa, en el orden en que pasan. Su nieta Lupita le ayudó un rato con su propia hoja, y ahora quieren saber si las dos hojas cuentan la misma historia o si una es un pedazo de la otra.
Escribe una función que reciba uno y otro, dos listas de enteros: los números de camión de cada hoja, en orden. Pueden venir vacías y ninguna pasa de 20 números. Regresa uno de estos cuatro textos: "igual" si las dos hojas traen los mismos números en el mismo orden; "dentro" si la primera aparece completa, seguida y en el mismo orden en algún lugar de la segunda; "contiene" si es la segunda la que aparece así dentro de la primera; y "distintas" si no pasa ninguna de las tres.
Seguida quiere decir sin huecos: [6, 20, 9] está dentro de [6, 20, 9, 14, 3], y también de [3, 6, 20, 9], pero [6, 9] no está dentro de [6, 20, 9], porque entre el 6 y el 9 pasó otro camión.
Los números se comparan uno por uno y completos: cada camión es un número, no las cifras que lo forman. Un 6 seguido de un 20 son dos camiones, y no empatan con un solo camión 620.
Una hoja vacía cuenta como que aparece dentro de cualquier otra: si la primera viene vacía y la segunda no, regresas "dentro"; si es la segunda la que viene vacía, "contiene"; y si las dos vienen vacías, "igual".
Ejemplos
Las dos hojas son iguales
[41, 7, 13], [41, 7, 13] → "igual"
La primera empieza a la segunda
[6, 20, 9], [6, 20, 9, 14, 3] → "dentro"
La primera va en medio de la segunda
[20, 9], [6, 20, 9, 14] → "dentro"
La segunda va en medio de la primera
[6, 20, 9, 14], [20, 9] → "contiene"
Los mismos camiones en otro orden
[6, 20, 9], [9, 20, 6] → "distintas"
Falta un camión en medio
[6, 9], [6, 20, 9] → "distintas"
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def compara_notas(uno, otro):
passJavaScript
function comparaNotas(uno, otro) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.
Más retos de O(n²)
- Los charcos del patiorejillas · recursión · ciclos
- Los códices gemelosciclos · textos · índices
- Los dulces del campamentolistas · ciclos · comparaciones
- Los gritos de la entrenadoraciclos · listas · textos
- Los guerreros de Cadmolistas · ciclos · comparaciones
- Los hot cakes de Don Chuyciclos · listas · índices