vladovip

WildZoo_JS_FUND EX Solved

Apr 30th, 2022 (edited)
638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function wildZoo(inputArr) {
  2.     let textLine = inputArr.shift();
  3.     let animalRecordsObj = {};
  4.     let animalAreaObj = {};
  5.  
  6.     while (textLine != "EndDay") {
  7.       let tokens = textLine.split(": ");
  8.       let currentCommand = tokens[0];
  9.       let animalInfoLine = tokens[1].split("-");
  10.       let animalName = animalInfoLine[0];
  11.       let food = Number(animalInfoLine[1]);
  12.       let area = animalInfoLine[2];  
  13.  
  14.       // console.log(currentCommand, animalName, food, area);
  15.       if (currentCommand == "Add") {
  16.         let area = animalInfoLine[2];  
  17.  
  18.         if (animalRecordsObj.hasOwnProperty(animalName) == false) {
  19.           animalRecordsObj[animalName] = { neededFood: 0, areaOfLiving: area };
  20.           animalRecordsObj[animalName].neededFood += food;
  21.           animalAreaObj[animalName] = area;
  22.          
  23.          // counter in each area to be define and set.
  24.         } else if (animalRecordsObj.hasOwnProperty(animalName) == true) {
  25.           animalRecordsObj[animalName].neededFood += food;
  26.         }
  27.  
  28.       } else if (currentCommand == "Feed") {
  29.        
  30.  
  31.         if (animalRecordsObj.hasOwnProperty(animalName) == true) {
  32.           animalRecordsObj[animalName].neededFood -= food;
  33.           if (animalRecordsObj[animalName].neededFood <= 0) {
  34.             console.log(`${animalName} was successfully fed`);
  35.             delete animalRecordsObj[animalName];
  36.             delete animalAreaObj[animalName];
  37.           }
  38.         }
  39.       }
  40.  
  41.       textLine = inputArr.shift();
  42.     }
  43.  
  44.     console.log(`Animals:`);
  45.     for (let animalName in animalRecordsObj) {
  46.       console.log(`${animalName} -> ${animalRecordsObj[animalName].neededFood}g`);
  47.     }
  48.  
  49.    
  50.     let arrOfAnimals = Object.entries(animalAreaObj);
  51.     let areaObj = {};
  52.     // console.log(arrOfAnimals);
  53.     for (let index = 0; index < arrOfAnimals.length; index++) {
  54.        let arrOfAnimal = arrOfAnimals[index].reverse();
  55.        let area = arrOfAnimal[0];
  56.        let animal = arrOfAnimal[1];
  57.     //    console.log(area, animal);
  58.         if ( areaObj.hasOwnProperty(area) == false ){
  59.             areaObj[area] = [];
  60.             areaObj[area].push(animal);
  61.         } else if ( areaObj.hasOwnProperty(area) == true  ){
  62.             if (  areaObj[area].includes(animal) == false ){
  63.                 areaObj[area].push(animal);
  64.             }
  65.         }
  66.     }
  67.     console.log(`Areas with hungry animals:`);
  68.     for ( let area in  areaObj){
  69.         console.log(`${area}: ${areaObj[area].length}`);
  70.     }
  71.    
  72.    
  73.  
  74.   }
  75.  
  76.   wildZoo([
  77.     "Add: Adam-4500-ByTheCreek",
  78.     "Add: Maya-7600-WaterfallArea",
  79.     "Add: Maya-1230-WaterfallArea",
  80.     "Feed: Jamie-2000",
  81.     "EndDay",
  82.   ]);
  83.  
  84.   console.log(`--------`);
  85.  
  86.   wildZoo([
  87.     "Add: Jamie-600-WaterfallArea",
  88.     "Add: Maya-6570-WaterfallArea",
  89.     "Add: Adam-4500-ByTheCreek",
  90.     "Add: Bobbie-6570-WaterfallArea",
  91.     "Feed: Jamie-2000",
  92.     "Feed: Adam-2000",
  93.     "Feed: Adam-2500",
  94.     "EndDay",
  95.   ]);
  96.  
  97.   console.log(`---------`);
  98.  
  99.   wildZoo([
  100.     "Add: Bonie-3490-RiverArea",
  101.     "Add: Sam-5430-DeepWoodsArea",
  102.     "Add: Bonie-200-RiverArea",
  103.     "Add: Maya-4560-ByTheCreek",
  104.     "Feed: Maya-2390",
  105.     "Feed: Bonie-3500",
  106.     "Feed: Johny-3400",
  107.     "Feed: Sam-5500",
  108.     "EndDay",
  109.   ]);
  110.  
Add Comment
Please, Sign In to add comment