Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function feedTheAnimals (animals) {
- let hungryAnimals = new Map();
- let areas = new Map();
- let command = '';
- while (command !== 'Last Info') {
- [command, nameAnimal, dailyFoodLimit, area] = command.split(':');
- dailyFoodLimit = parseInt(dailyFoodLimit);
- if (command === 'Add') {
- if (!hungryAnimals.has(nameAnimal)) {
- hungryAnimals.set(nameAnimal, dailyFoodLimit);
- if (!areas.has(area)) {
- areas.set(area, [nameAnimal]);
- } else {
- areas.get(area).push(nameAnimal);
- }
- } else {
- hungryAnimals.set(nameAnimal, hungryAnimals.get(nameAnimal) + dailyFoodLimit);
- }
- } else if (command === 'Feed') {
- if (hungryAnimals.has(nameAnimal)) {
- if (hungryAnimals.get(nameAnimal) <= dailyFoodLimit) {
- hungryAnimals.delete(nameAnimal);
- areas.get(area).splice(areas.get(area).indexOf(nameAnimal), 1);
- console.log(`${nameAnimal} was successfully fed`);
- } else {
- hungryAnimals.set(nameAnimal, hungryAnimals.get(nameAnimal) - dailyFoodLimit);
- }
- }
- }
- command = animals.shift();
- }
- let outputAnimals = [...hungryAnimals.entries()];
- outputAnimals.sort((a, b) => {
- if (a[1] > b[1]) {
- return -1;
- } else if (a[1] < b[1]) {
- return 1;
- } else if (a[1] === b[1]) {
- for (let index = 0; index < Math.max(a[0].length, b[0].length); index++) {
- if (a[0][index] > b[0][index]) {
- return 1;
- } else if (a[0][index] < b[0][index]) {
- return -1;
- }
- }
- }
- });
- let outputAreas = [...areas.entries()];
- outputAreas.sort((a, b) => {
- if (a[1].length > b[1].length) {
- return -1;
- } else if (a[1].length < b[1].length) {
- return 1;
- }
- });
- console.log('Animals:');
- outputAnimals.forEach(el => {
- console.log(`${el[0]} -> ${el[1]}g`);
- });
- console.log('Areas with hungry animals:');
- outputAreas.forEach(el => {
- if (el[1].length > 0) {
- console.log(`${el[0]} : ${el[1].length}`);
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment