Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function speed(arr) {
- const cars = new Map();
- const carsCapacity = Number(arr.shift());
- for(let i = 0; i < carsCapacity; i++) {
- let [carName, mileage, fuel] = arr.shift().split('|');
- mileage = Number(mileage);
- fuel = Number(fuel);
- let carArr = [mileage, fuel];
- cars.set(carName, carArr);
- }
- let commandStr = arr.shift();
- while(commandStr !== 'Stop') {
- if(commandStr.includes('Drive ')) {
- let [cmdName, carName, distance, fuel] = commandStr.split(' : ');
- distance = Number(distance);
- fuel = Number(fuel);
- let availableFuel = cars.get(carName)[1];
- if(availableFuel >= fuel) {
- let fuelLeft = availableFuel - fuel;
- let currentDistance = cars.get(carName)[0];
- let totalDistance = currentDistance + distance;
- let carArr = [totalDistance, fuelLeft];
- cars.set(carName, carArr);
- console.log(`${carName} driven for ${distance} kilometers. ${fuel} liters of fuel consumed.`);
- if(totalDistance >= 100000) {
- console.log(`Time to sell the ${carName}!`);
- cars.delete(carName);
- }
- } else {
- console.log('Not enough fuel to make that ride');
- }
- // END OF 'DRIVE' CASE ===============================================================
- } else if(commandStr.includes('Refuel ')) {
- let [cmdName, carName, fuel] = commandStr.split(' : ');
- fuel = Number(fuel);
- let currentFuel = cars.get(carName)[1];
- let totalFuel;
- if(currentFuel + fuel > 75) {
- let filledFuel = 75 - currentFuel;
- totalFuel = 75;
- cars.get(carName)[1] = totalFuel;
- console.log(`${carName} refueled with ${filledFuel} liters`);
- } else {
- totalFuel = currentFuel + fuel;
- cars.get(carName)[1] = totalFuel;
- console.log(`${carName} refueled with ${fuel} liters`);
- }
- // END OF 'REFUEL' CASE ==============================================================
- } else if(commandStr.includes('Revert ')) {
- let [cmdName, carName, kilometers] = commandStr.split(' : ');
- kilometers = Number(kilometers);
- let currentMileage = cars.get(carName)[0];
- if(currentMileage - kilometers < 10000) {
- cars.get(carName)[0] = 10000;
- } else {
- totalMileage = currentMileage - kilometers;
- cars.get(carName)[0] = totalMileage;
- console.log(`${carName} mileage decreased by ${kilometers} kilometers`);
- }
- // END OF 'REVERT' CASE ==============================================================
- }
- commandStr = arr.shift();
- }
- let carEntries = Array.from(cars.entries()).sort((a, b) => {
- let mileageA = a[1][0];
- let mileageB = b[1][0];
- let carNameA = a[0];
- let carNameB = b[0];
- if(mileageA != mileageB) {
- return mileageB - mileageA;
- } else {
- return carNameA.localeCompare(carNameB);
- }
- });
- carEntries.forEach(entrie => {
- let [name, carArr] = entrie;
- let [mileage, fuel] = carArr;
- console.log(`${name} -> Mileage: ${mileage} kms, Fuel in the tank: ${fuel} lt.`);
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement