Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(input) {
- let animals = {}; // key - string, value - number
- let areas = {}; //key - string, value - string []
- for (let line of input) {
- if (line === 'Last Info') {
- break;
- }
- let [command, animalName, food, area] = line.split(':');
- if (command === 'Add') {
- addAnimal(animalName, food, area);
- } else {
- feedAnimal(animalName, food, area);
- }
- }
- let sortedAnimals = Object.entries(animals).sort(sortAnimals);
- console.log("Animals:");
- for (let [animalName, food] of sortedAnimals) {
- console.log(`${animalName} -> ${food}g`);
- }
- let sortedAreas = Object.entries(areas).sort(sortAreas);
- console.log(`Areas with hungry animals:`);
- for (let [area, animals] of sortedAreas) {
- let hungryAnimals = animals.length;
- if (hungryAnimals > 0) {
- console.log(`${area} : ${animals.length}`);
- }
- }
- function addAnimal(animalName, dailyFoodLimit, givenArea) {
- dailyFoodLimit = Number(dailyFoodLimit);
- if (!animals.hasOwnProperty(animalName)) {
- animals[animalName] = dailyFoodLimit;
- } else {
- animals[animalName] += dailyFoodLimit;
- }
- if (!areas.hasOwnProperty(givenArea)) {
- areas[givenArea] = [animalName];
- } else {
- let animalsInArea = areas[givenArea];
- if (!animalsInArea.includes(animalName)) {
- animalsInArea.push(animalName);
- }
- }
- }
- function feedAnimal(animalName, food, givenArea) {
- food = Number(food);
- if (animals.hasOwnProperty(animalName)) {
- animals[animalName] -= food;
- }
- if (animals[animalName] <= 0) {
- console.log(`${animalName} was successfully fed`);
- delete animals[animalName];
- let animalsInArea = areas[givenArea];
- let indexOfAnimal = animalsInArea.indexOf(animalName);
- animalsInArea.splice(indexOfAnimal, 1);
- }
- }
- function sortAnimals(a, b) {
- let aAnimalFood = a[1];
- let bAnimalFood = b[1];
- let result = bAnimalFood - aAnimalFood;
- if (result === 0) {
- let aAnimalName = a[0];
- let bAnimalName = b[0];
- return aAnimalName.localeCompare(bAnimalName);
- }
- return result;
- // return b[1] - a[1] || a[0].localeCompare(b[0]);
- }
- function sortAreas(a, b) {
- let aAnimalsCount = a[1].length;
- let bAnimalsCount = b[1].length;
- return bAnimalsCount - aAnimalsCount;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement