Pregunta de entrevista de atolls
Write a function that accepts an array of tickets, where ticket has format [source: string,
destination: string] and returns comma separated countries in order of visiting.
function getRoute(tickets){
return 'USA,BRA,UAE,JPN,PHL'; // implement logic here
}
const result = getRoute([['JPN', 'PHL'], ['BRA', 'UAE'], ['USA', 'BRA'], ['UAE',
'JPN']]);
console.log(result);
Example:
Tickets: [["JPN", "PHL"], ["BRA", "UAE"], ["USA", "BRA"], ["UAE", "JPN"]]
Result: "USA, BRA, UAE, JPN, PHL
Respuestas de entrevistas
Search "Follow that spy" on Codewars
const TICKETS = [["USA","BRA"],["JPN","PHL"],["BRA","UAE"],["UAE","JPN"]];
const findFrom = (routes, dest) => {
let from = null;
routes.forEach(ticket => from = (ticket[1] == dest) ? ticket[0] : "");
}
const findDest = (routes, from) => {
let dest = null;
routes.forEach(ticket => {
if (ticket[0] == from) {
dest = ticket[1];
}
});
return dest;
}
const findRoutes = (routes) => {
let output = [];
if (routes.length == 0) return output;
let firstFrom = null, from = routes[0][0], dest = null, counter = 0;
do {
firstFrom = findFrom(routes, from);
if (firstFrom != null) {
from = firstFrom
}
counter++;
} while (firstFrom != null && counter < routes.length);
output.push(from);
counter = 0;
do {
dest = findDest(routes, from);
if (dest != null) {
output.push(dest);
from = dest;
}
counter++;
} while (dest != null && counter < routes.length);
return output;
}
const PATH = findRoutes(TICKETS);
console.log(PATH); // output - ["USA", "BRA", "UAE", "JPN", "PHL"]