Middle
Van deze tickets kan een enkele, ononderbroken route worden gebouwd. Er zijn geen lussen of herhalingen in de route. Je moet een programma schrijven dat dezelfde ticketobjecten retourneert in de volgorde van de route. ```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
Antwoord van AI
In de gepresenteerde code ontbreekt de definitie van de startstad startcity. Om een enkele route te bouwen uit de set tickets, moet je:
- De stad vinden waar niemand naartoe komt — dat wordt de start.
- Een Map maken om snel een ticket te zoeken op basis van de vertrekgemeente.
- Iteratief door de tickets gaan, beginnend bij de startstad, en de route vormen.
Voorbeeld van een gecorrigeerde en volledige oplossing:
function getRoute(tickets = []) {
const fromCities = new Set(tickets.map(t => t.from));
const toCities = new Set(tickets.map(t => t.to));
// Vind de startstad — die in from staat, maar niet 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' },
]));
Resultaat:
[
{ "from": "NY", "to": "London" },
{ "from": "London", "to": "Moscow" },
{ "from": "Moscow", "to": "Spb" }
]
Op deze manier herstelt het programma de route in de juiste volgorde.