Pergunta de entrevista da empresa 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

Respostas da entrevista

Sigiloso

30 de jun. de 2021

Search "Follow that spy" on Codewars

Sigiloso

19 de out. de 2022

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"]