Sobes.tech
Middle

Da questi biglietti si può costruire un unico percorso continuo. Non ci sono loop o ripetizioni nel percorso. Devi scrivere un programma che restituisca gli stessi oggetti biglietto nell'ordine del percorso. ```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

Risposta dell'AI

Nel codice presentato manca la definizione della città di partenza startcity. Per costruire un percorso unico dall'insieme di biglietti, è necessario:

  1. Trovare la città da cui nessuno arriva — questa sarà la partenza.
  2. Creare una mappa per cercare rapidamente il biglietto in base alla città di partenza.
  3. Iterare sui biglietti, partendo dalla città iniziale, formando il percorso.

Esempio di soluzione corretta e completa:

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

  // Trova la città di partenza — quella che è in from, ma non in 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' },
]));

Risultato:

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

In questo modo, il programma ricostruisce il percorso nell'ordine corretto.