dilyana2001

Untitled

Jun 19th, 2021 (edited)
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function needForSpeedIII(arr) {
  2.     let cars = {}
  3.     let n = Number(arr.shift())
  4.     arr.splice(0, n).map(row => row.split('|')).map(row => {
  5.         cars[row[0]] = { mileage: Number(row[1]), fuel: Number(row[2]) }
  6.     })
  7.  
  8.     let commandParser = {
  9.         'Drive': drive,
  10.         'Refuel': refuel,
  11.         'Revert': revert
  12.     }
  13.  
  14.     arr.forEach(row => {
  15.         let [command, ...args] = row.split(' : ')
  16.         if (command !== 'Stop') {
  17.             console.log(commandParser[command](cars, ...args))
  18.         }
  19.     })
  20.  
  21.     Object.entries(cars).sort((a, b) => b[1].mileage - a[1].mileage || a[0].localeCompare(b[0]))
  22.         .map(row => console.log(`${row[0]} -> Mileage: ${row[1].mileage} kms, Fuel in the tank: ${row[1].fuel} lt.`))
  23.  
  24.     function drive(cars, car, mileage, fuel) {
  25.         mileage = Number(mileage)
  26.         fuel = Number(fuel)
  27.         let obj = cars[car]
  28.         if (obj.fuel > fuel) {
  29.             obj.fuel -= fuel
  30.             obj.mileage += mileage
  31.             if (obj.mileage >= 100000) {
  32.                 delete cars[car]
  33.                 return `${car} driven for ${mileage} kilometers. ${fuel} liters of fuel consumed.\nTime to sell the ${car}!`
  34.             } else {
  35.                 return `${car} driven for ${mileage} kilometers. ${fuel} liters of fuel consumed.`
  36.             }
  37.         } else {
  38.             return `Not enough fuel to make that ride`
  39.         }
  40.     }
  41.  
  42.     function refuel(cars, car, fuel) {
  43.         fuel = Number(fuel)
  44.         let obj = cars[car]
  45.         let oldValue = obj.fuel
  46.         obj.fuel = Math.min(75, obj.fuel + fuel)
  47.         return `${car} refueled with ${obj.fuel-oldValue} liters`
  48.     }
  49.  
  50.     function revert(cars, car, mileage) {
  51.         mileage = Number(mileage)
  52.         let obj = cars[car]
  53.         obj.mileage -= mileage
  54.         if (obj.mileage > 10000) {
  55.             return `${car} mileage decreased by ${mileage} kilometers`
  56.         }
  57.         obj.mileage = 10000
  58.     }
  59. }
  60.  
  61. // needForSpeedIII([
  62. //         '3',
  63. //         'Audi A6|38000|62',
  64. //         'Mercedes CLS|11000|35',
  65. //         'Volkswagen Passat CC|45678|5',
  66. //         'Drive : Audi A6 : 543 : 47',
  67. //         'Drive : Mercedes CLS : 94 : 11',
  68. //         'Drive : Volkswagen Passat CC : 69 : 8',
  69. //         'Refuel : Audi A6 : 50',
  70. //         'Revert : Mercedes CLS : 500',
  71. //         'Revert : Audi A6 : 30000',
  72. //         'Stop'
  73. //     ])
  74. needForSpeedIII([
  75.     '4',
  76.     'Lamborghini Veneno|11111|74',
  77.     'Bugatti Veyron|12345|67',
  78.     'Koenigsegg CCXR|67890|12',
  79.     'Aston Martin Valkryie|99900|50',
  80.     'Drive : Koenigsegg CCXR : 382 : 82',
  81.     'Drive : Aston Martin Valkryie : 99 : 23',
  82.     'Drive : Aston Martin Valkryie : 2 : 1',
  83.     'Refuel : Lamborghini Veneno : 40',
  84.     'Revert : Bugatti Veyron : 2000',
  85.     'Stop'
  86. ])
Add Comment
Please, Sign In to add comment