function solve (input) { let numCars = Number(input.shift()); let carsObj = {}; for (let index = 0; index < numCars; index++) { let [model, mileage, fuel] = input[index].split("|"); carsObj[model] = {}; carsObj[model].mileage = Number(mileage); carsObj[model].fuel = Number(fuel); } input.splice(0, numCars); input.pop(); let commands = { Drive (model, distance, fuel){ let fuelLeft = carsObj[model].fuel - Number(fuel); if (fuelLeft <= 0) { console.log("Not enough fuel to make that ride"); }else{ carsObj[model].fuel = fuelLeft; carsObj[model].mileage += Number(distance); console.log(`${model} driven for ${distance} kilometers. ${fuel} liters of fuel consumed.`); } if (carsObj[model].mileage >= 100000) { console.log(`Time to sell the ${model}!`); delete carsObj[model]; } }, Refuel(car, fuel){ let totalFuel = carsObj[car].fuel + Number(fuel); if (totalFuel >= 75) { console.log(`${car} refueled with ${75 - carsObj[car].fuel} liters`); carsObj[car].fuel = 75; }else{ carsObj[car].fuel += Number(fuel); console.log(`${car} refueled with ${fuel} liters`); } }, Revert(car, distance){ let decreasedDistance = carsObj[car].mileage - Number(distance); if (decreasedDistance <= 10000) { carsObj[car].mileage = 10000; } else { carsObj[car].mileage -= distance; console.log(`${car} mileage decreased by ${distance} kilometers`); } } } input.forEach(element => { let [command, ...arg] = element.split(" : "); commands[command](...arg); }); let sorted = Object.entries(carsObj); sorted.sort((a,b) => b[1].mileage - a[1].mileage ); sorted.forEach(element => { console.log(`${element[0]} -> Mileage: ${element[1].mileage} kms, Fuel in the tank: ${element[1].fuel} lt.`); }); }