Advertisement
kstoyanov

03. Need for Speed III

Aug 7th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {  
  2.   const cars = {};
  3.  
  4.   const carsCount = Number(input.shift());
  5.   for (let i = 0; i < carsCount; i++) {
  6.     let [name, mileage, fuel] = input.shift().split('|');
  7.     mileage = Number(mileage);
  8.     fuel = Number(fuel);
  9.  
  10.     cars[name] = { mileage, fuel };
  11.   }
  12.  
  13.   let commandLine = input.shift();
  14.   while (commandLine !== 'Stop') {
  15.     const [command, carName, firstArument, secondArgument] = commandLine.split(' : ');
  16.  
  17.     switch (command) {
  18.       case 'Drive': {
  19.         const distance = Number(firstArument);
  20.         const fuel = Number(secondArgument);
  21.         if (cars[carName].fuel >= fuel) {
  22.           cars[carName].mileage += distance;
  23.           cars[carName].fuel -= fuel;
  24.           console.log(`${carName} driven for ${distance} kilometers. ${fuel} liters of fuel consumed.`);
  25.  
  26.           if (cars[carName].mileage >= 100000) {
  27.             delete cars[carName];
  28.             console.log(`Time to sell the ${carName}!`);
  29.           }
  30.         } else {
  31.           console.log('Not enough fuel to make that ride');
  32.         }
  33.         break;
  34.       }
  35.       case 'Refuel': {
  36.         const fuel = Number(firstArument);
  37.         const oldFuel = cars[carName].fuel;
  38.  
  39.         if (oldFuel + fuel > 75) {
  40.           cars[carName].fuel = 75;
  41.           console.log(`${carName} refueled with ${75 - oldFuel} liters`);
  42.         } else {
  43.           cars[carName].fuel += fuel;
  44.           console.log(`${carName} refueled with ${fuel} liters`);
  45.         }
  46.  
  47.         break;
  48.       }
  49.       case 'Revert': {
  50.         const kilometers = Number(firstArument);
  51.         if (cars[carName].mileage - kilometers < 10000) {
  52.           cars[carName].mileage = 10000;
  53.         } else {
  54.           cars[carName].mileage -= kilometers;
  55.           console.log(`${carName} mileage decreased by ${kilometers} kilometers`);
  56.         }
  57.         break;
  58.       }
  59.       default:
  60.         break;
  61.     }
  62.  
  63.  
  64.     commandLine = input.shift();
  65.   }
  66.  
  67.   const carEntries = Object.entries(cars);
  68.  
  69.   const sortedCarEntries = carEntries.sort((a, b) => {
  70.     if (b[1].mileage === a[1].mileage) {
  71.       return a[0].localeCompare(b[0]);
  72.     }
  73.     return b[1].mileage - a[1].mileage;
  74.   });
  75.  
  76.   sortedCarEntries.forEach((el) => {
  77.     const {mileage,fuel } = el[1];
  78.     console.log(`${el[0]} -> Mileage: ${mileage} kms, Fuel in the tank: ${fuel} lt.`);
  79.   });
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement