Advertisement
nikolayneykov

Untitled

Apr 18th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve (params) {
  2.   params.pop()
  3.   let animals = new Map()
  4.   let areas = new Map()
  5.  
  6.   for (let param of params) {
  7.     let [command, ...args] = param.split(':')
  8.  
  9.     if (command === 'Add') {
  10.       let [animalName, dailyFoodLimit, area] = args
  11.       dailyFoodLimit = +dailyFoodLimit
  12.  
  13.       if (!areas.has(area)) {
  14.         areas.set(area, 0)
  15.       }
  16.       if (!animals.has(animalName)) {
  17.         animals.set(animalName, 0)
  18.         areas.set(area, areas.get(area) + 1)
  19.       }
  20.  
  21.       animals.set(animalName, animals.get(animalName) + dailyFoodLimit)
  22.     } else if (command === 'Feed') {
  23.       let [animalName, food, area] = args
  24.       food = +food
  25.  
  26.       if (animals.has(animalName)) {
  27.         animals.set(animalName, animals.get(animalName) - food)
  28.  
  29.         if (animals.get(animalName) <= 0) {
  30.           animals.delete(animalName)
  31.           areas.set(area, areas.get(area) - 1)
  32.           console.log(`${animalName} was successfully fed`)
  33.         }
  34.       }
  35.     }
  36.   }
  37.  
  38.   let sortedAnimals = [...animals].sort((a, b) => {
  39.     let result = b[1] - a[1]
  40.  
  41.     if (result === 0) {
  42.       result = a[0].localeCompare(b[0])
  43.     }
  44.  
  45.     return result
  46.   })
  47.  
  48.   console.log('Animals:')
  49.  
  50.   sortedAnimals.forEach(x => {
  51.     console.log(`${x[0]} -> ${x[1]}g`)
  52.   })
  53.  
  54.   console.log(`Areas with hungry animals:`)
  55.  
  56.   let sortedAreas = [...areas].sort((a, b) => b[1] - a[1])
  57.  
  58.   sortedAreas.forEach(x => {
  59.     if (x[1] > 0) {
  60.       console.log(`${x[0]} : ${x[1]}`)
  61.     }
  62.   })
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement