Advertisement
nikolayneykov

Untitled

Apr 25th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve (params) {
  2.   let areas = new Map()
  3.   let animals = new Map()
  4.  
  5.   params.slice(0, params.length - 1).forEach(line => {
  6.     let [command, name, food, area] = line.split(':')
  7.  
  8.     if (command === 'Add') {
  9.       if (!animals.has(name)) {
  10.         animals.set(name, 0)
  11.  
  12.         if (!areas.has(area)) {
  13.           areas.set(area, 0)
  14.         }
  15.  
  16.         areas.set(area, areas.get(area) + 1)
  17.       }
  18.  
  19.       animals.set(name, animals.get(name) + Number(food))
  20.     } else if (command === 'Feed' && animals.has(name)) {
  21.       animals.set(name, animals.get(name) - food)
  22.  
  23.       if (animals.get(name) <= 0) {
  24.         console.log(`${name} was successfully fed`)
  25.         animals.delete(name)
  26.         areas.set(area, areas.get(area) - 1)
  27.       }
  28.     }
  29.   })
  30.  
  31.   console.log('Animals:')
  32.   Array.from(animals)
  33.     .sort(
  34.       ([nameA, foodA], [nameB, foodB]) =>
  35.         foodB - foodA || nameA.localeCompare(nameB)
  36.     )
  37.     .forEach(([name, food]) => console.log(`${name} -> ${food}g`))
  38.  
  39.   console.log('Areas with hungry animals:')
  40.   Array.from(areas)
  41.     .filter(([area, count]) => count > 0)
  42.     .sort(([areaA, countA], [areaB, countB]) => countB - countA)
  43.     .forEach(([area, count]) => console.log(`${area} : ${count}`))
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement