Advertisement
tetris555

nfs3

Nov 20th, 2022 (edited)
1,239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(arr) {
  2.     let n = Number(arr.shift());
  3.     arr.pop();
  4.     const len = arr.length;
  5.  
  6.     const cars = new Map();
  7.     const re = /(?<model>[\w\s]+)\|(?<mileage>\d+)\|(?<fuel>\d+)/i;
  8.  
  9.     for (let i = 0; i < n; i++) {
  10.         const {model, mileage: mileage, fuel} = arr[i].match(re).groups;
  11.         cars.set(model, {mileage: Number(mileage), fuel: Number(fuel)});
  12.     }
  13.  
  14.     for (let i = n; i < len; i++) {
  15.         let [activity, ...rest] = arr[i].split(/\s*:\s*/);
  16.        
  17.         if (activity == 'Drive') {
  18.             let [car, mileage, fuel] = rest;
  19.             mileage = Number(mileage);
  20.             fuel = Number(fuel);
  21.            
  22.             if (cars.get(car).fuel >= fuel) {
  23.                 cars.get(car).mileage += mileage;
  24.                 cars.get(car).fuel -= fuel;
  25.                 console.log(`${car} driven for ${mileage} kilometers. ${fuel} liters of fuel consumed.`);
  26.  
  27.                 if (cars.get(car).mileage >= 100000) {
  28.                     console.log(`Time to sell the ${car}!`);
  29.                     cars.delete(car);
  30.                 }
  31.             }
  32.             else {
  33.                 console.log('Not enough fuel to make that ride');
  34.             }
  35.         }
  36.         else if (activity == 'Refuel') {
  37.             let [car, fuel] = rest;
  38.             fuel = Number(fuel);
  39.  
  40.             const newTank = Math.min(cars.get(car).fuel + fuel, 75);
  41.             let topped = (cars.get(car).fuel + fuel) > 75 ? 75 - cars.get(car).fuel : fuel;
  42.             cars.get(car).fuel = newTank;
  43.             console.log(`${car} refueled with ${topped} liters`);
  44.         }
  45.         else if (activity == 'Revert') {
  46.             let [car, mileage] = rest;
  47.             mileage = Number(mileage);
  48.  
  49.             if ((cars.get(car).mileage - mileage) < 10000) {
  50.                 cars.get(car).mileage = 10000;
  51.             }
  52.             else {
  53.                 console.log(`${car} mileage decreased by ${mileage} kilometers`);
  54.                 cars.get(car).mileage = cars.get(car).mileage - mileage;
  55.             }
  56.         }
  57.     }
  58.     [...cars.entries()].forEach(([car, {mileage, fuel}]) => {
  59.         console.log(`${car} -> Mileage: ${mileage} kms, Fuel in the tank: ${fuel} lt.`);
  60.     })
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement