Advertisement
Lulunga

demo final Feed the animals 03.

Jul 28th, 2019
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.     let animals = {}; // key - string, value - number
  3.     let areas = {}; //key - string, value - string []
  4.  
  5.     for (let line of input) {
  6.         if (line === 'Last Info') {
  7.             break;
  8.         }
  9.         let [command, animalName, food, area] = line.split(':');
  10.         if (command === 'Add') {
  11.             addAnimal(animalName, food, area);
  12.         } else {
  13.             feedAnimal(animalName, food, area);
  14.         }
  15.     }
  16.     let sortedAnimals = Object.entries(animals).sort(sortAnimals);
  17.     console.log("Animals:");
  18.     for (let [animalName, food] of sortedAnimals) {
  19.         console.log(`${animalName} -> ${food}g`);
  20.     }
  21.  
  22.     let sortedAreas = Object.entries(areas).sort(sortAreas);
  23.  
  24.     console.log(`Areas with hungry animals:`);
  25.     for (let [area, animals] of sortedAreas) {
  26.         let hungryAnimals = animals.length;
  27.         if (hungryAnimals > 0) {
  28.             console.log(`${area} : ${animals.length}`);
  29.         }
  30.  
  31.     }
  32.  
  33.  
  34.  
  35.     function addAnimal(animalName, dailyFoodLimit, givenArea) {
  36.         dailyFoodLimit = Number(dailyFoodLimit);
  37.         if (!animals.hasOwnProperty(animalName)) {
  38.             animals[animalName] = dailyFoodLimit;
  39.         } else {
  40.             animals[animalName] += dailyFoodLimit;
  41.         }
  42.         if (!areas.hasOwnProperty(givenArea)) {
  43.             areas[givenArea] = [animalName];
  44.         } else {
  45.             let animalsInArea = areas[givenArea];
  46.             if (!animalsInArea.includes(animalName)) {
  47.                 animalsInArea.push(animalName);
  48.             }
  49.         }
  50.     }
  51.  
  52.     function feedAnimal(animalName, food, givenArea) {
  53.         food = Number(food);
  54.         if (animals.hasOwnProperty(animalName)) {
  55.             animals[animalName] -= food;
  56.         }
  57.  
  58.         if (animals[animalName] <= 0) {
  59.             console.log(`${animalName} was successfully fed`);
  60.             delete animals[animalName];
  61.             let animalsInArea = areas[givenArea];
  62.             let indexOfAnimal = animalsInArea.indexOf(animalName);
  63.             animalsInArea.splice(indexOfAnimal, 1);
  64.         }
  65.     }
  66.  
  67.     function sortAnimals(a, b) {
  68.         let aAnimalFood = a[1];
  69.         let bAnimalFood = b[1];
  70.         let result = bAnimalFood - aAnimalFood;
  71.         if (result === 0) {
  72.             let aAnimalName = a[0];
  73.             let bAnimalName = b[0];
  74.             return aAnimalName.localeCompare(bAnimalName);
  75.         }
  76.         return result;
  77.         // return b[1] - a[1] || a[0].localeCompare(b[0]);
  78.     }
  79.  
  80.     function sortAreas(a, b) {
  81.         let aAnimalsCount = a[1].length;
  82.         let bAnimalsCount = b[1].length;
  83.         return bAnimalsCount - aAnimalsCount;
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement