Sobes.tech
Middle

De estos billetes se puede construir una única ruta continua. No hay bucles ni repeticiones en la ruta. Necesitas escribir un programa que devuelva estos mismos objetos de billetes en el orden de la ruta. ```javascript function getRoute(tickets = []) { const cities = new Map(); for (const ticket of tickets) { cities.set(ticket.from, ticket); } const result = []; let currentCity = startcity; while (cities.has(currentCity)) { const next = cities.get(currentCity); result.push(next); currentCity = next.to; } return result; } console.clear() console.log(getRoute([ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Spb' }, ])); ```

sobes.tech AI

Respuesta de la IA

En el código presentado, falta la definición de la ciudad inicial startcity. Para construir una única ruta a partir del conjunto de billetes, es necesario:

  1. Encontrar la ciudad desde la cual nadie llega — esa será la de inicio.
  2. Crear un Map para buscar rápidamente el billete por la ciudad de salida.
  3. Recorrer iterativamente los billetes, comenzando desde la ciudad inicial, formando la ruta.

Ejemplo de una solución corregida y completa:

function getRoute(tickets = []) {
  const fromCities = new Set(tickets.map(t => t.from));
  const toCities = new Set(tickets.map(t => t.to));

  // Encontrar la ciudad inicial — aquella que está en from, pero no en to
  let startcity = null;
  for (const city of fromCities) {
    if (!toCities.has(city)) {
      startcity = city;
      break;
    }
  }

  const citiesMap = new Map();
  for (const ticket of tickets) {
    citiesMap.set(ticket.from, ticket);
  }

  const result = [];
  let currentCity = startcity;

  while (citiesMap.has(currentCity)) {
    const nextTicket = citiesMap.get(currentCity);
    result.push(nextTicket);
    currentCity = nextTicket.to;
  }

  return result;
}

console.log(getRoute([
  { from: 'London', to: 'Moscow' },
  { from: 'NY', to: 'London' },
  { from: 'Moscow', to: 'Spb' },
]));

Resultado:

[
  { "from": "NY", "to": "London" },
  { "from": "London", "to": "Moscow" },
  { "from": "Moscow", "to": "Spb" }
]

De esta manera, el programa reconstruye la ruta en el orden correcto.