Saltar al contenido

El itinerario del boleto

Enunciado

A Renata le tocó en la herencia un sobre con los boletos de tren de un viaje que su abuela hizo hace sesenta años, y quiere reconstruir la ruta. Cada boleto dice de qué ciudad sale y a qué ciudad llega, pero en el sobre quedaron revueltos.

Escribe una función que reciba boletos, una lista de listas de dos textos: el primero es la ciudad de donde sale ese boleto y el segundo la ciudad a donde llega. Hay de 1 a 20 boletos y vienen en cualquier orden. El viaje de la abuela no repitió ninguna ciudad: cada ciudad es la salida de un solo boleto o de ninguno, y la llegada de un solo boleto o de ninguno. Con todos los boletos se arma un único viaje seguido: ninguno queda suelto y no hay dos viajes aparte.

Los nombres se comparan completos: dos ciudades son la misma solo si su nombre es igual de principio a fin. "Santa Fe" y "Santa Fe de Antioquia" son dos ciudades distintas, aunque una empiece como la otra.

Y como el viaje es uno solo y seguido, hay exactamente una ciudad que no es la llegada de ningún boleto: de esa salió la abuela.

Regresa la lista de las ciudades del viaje en orden, empezando por la ciudad de donde salió la abuela y terminando en la última a donde llegó. Con un boleto son dos ciudades, con dos boletos son tres, y así.

Con [["Lyon", "Turín"], ["París", "Lyon"], ["Turín", "Roma"]] regresas ["París", "Lyon", "Turín", "Roma"]. Revísalo: el boleto de París llega a Lyon, el de Lyon a Turín y el de Turín a Roma; se usan los tres y ninguna ciudad se repite.

Ejemplos

  • El ejemplo

    [["Lyon", "Turín"], ["París", "Lyon"], ["Turín", "Roma"]] → ["París", "Lyon", "Turín", "Roma"]

  • Un solo boleto

    [["Oaxaca", "Puebla"]] → ["Oaxaca", "Puebla"]

  • Los boletos ya venían en orden

    [["Mérida", "Campeche"], ["Campeche", "Villahermosa"], ["Villahermosa", "Veracruz"]] → ["Mérida", "Campeche", "Villahermosa", "Veracruz"]

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def itinerario(boletos):
    pass

JavaScript

function itinerario(boletos) {
}
Resolver este reto

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)

Ver todos los retos →