Sobes.tech
Middle

Από αυτά τα εισιτήρια μπορεί να κατασκευαστεί μια μοναδική συνεχής διαδρομή. Δεν υπάρχουν βρόχοι ή επαναλήψεις στη διαδρομή. Πρέπει να γράψετε ένα πρόγραμμα που επιστρέφει αυτά τα ίδια αντικείμενα εισιτηρίων με τη σειρά της διαδρομής. ```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

Απάντηση από AI

Στον παρουσιασμένο κώδικα λείπει ο ορισμός της αρχικής πόλης startcity. Για να κατασκευάσετε μια μοναδική διαδρομή από το σύνολο των εισιτηρίων, πρέπει:

  1. Να βρείτε την πόλη από την οποία κανείς δεν φτάνει — αυτή θα είναι η αρχή.
  2. Να δημιουργήσετε ένα Map για γρήγορη αναζήτηση εισιτηρίου με βάση την πόλη αναχώρησης.
  3. Να διατρέξετε επαναληπτικά τα εισιτήρια, ξεκινώντας από την αρχική πόλη, σχηματίζοντας τη διαδρομή.

Παράδειγμα διορθωμένης και πλήρους λύσης:

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

  // Βρίσκουμε την αρχική πόλη — αυτή που βρίσκεται στο from, αλλά όχι στο 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' },
]));

Αποτέλεσμα:

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

Έτσι, το πρόγραμμα αποκαθιστά τη διαδρομή με τη σωστή σειρά.