Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(input) {
- const cars = {};
- const carsCount = Number(input.shift());
- for (let i = 0; i < carsCount; i++) {
- let [name, mileage, fuel] = input.shift().split('|');
- mileage = Number(mileage);
- fuel = Number(fuel);
- cars[name] = { mileage, fuel };
- }
- let commandLine = input.shift();
- while (commandLine !== 'Stop') {
- const [command, carName, firstArument, secondArgument] = commandLine.split(' : ');
- switch (command) {
- case 'Drive': {
- const distance = Number(firstArument);
- const fuel = Number(secondArgument);
- if (cars[carName].fuel >= fuel) {
- cars[carName].mileage += distance;
- cars[carName].fuel -= fuel;
- console.log(`${carName} driven for ${distance} kilometers. ${fuel} liters of fuel consumed.`);
- if (cars[carName].mileage >= 100000) {
- delete cars[carName];
- console.log(`Time to sell the ${carName}!`);
- }
- } else {
- console.log('Not enough fuel to make that ride');
- }
- break;
- }
- case 'Refuel': {
- const fuel = Number(firstArument);
- const oldFuel = cars[carName].fuel;
- if (oldFuel + fuel > 75) {
- cars[carName].fuel = 75;
- console.log(`${carName} refueled with ${75 - oldFuel} liters`);
- } else {
- cars[carName].fuel += fuel;
- console.log(`${carName} refueled with ${fuel} liters`);
- }
- break;
- }
- case 'Revert': {
- const kilometers = Number(firstArument);
- if (cars[carName].mileage - kilometers < 10000) {
- cars[carName].mileage = 10000;
- } else {
- cars[carName].mileage -= kilometers;
- console.log(`${carName} mileage decreased by ${kilometers} kilometers`);
- }
- break;
- }
- default:
- break;
- }
- commandLine = input.shift();
- }
- const carEntries = Object.entries(cars);
- const sortedCarEntries = carEntries.sort((a, b) => {
- if (b[1].mileage === a[1].mileage) {
- return a[0].localeCompare(b[0]);
- }
- return b[1].mileage - a[1].mileage;
- });
- sortedCarEntries.forEach((el) => {
- const {mileage,fuel } = el[1];
- console.log(`${el[0]} -> Mileage: ${mileage} kms, Fuel in the tank: ${fuel} lt.`);
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement