Advertisement
Guest User

Untitled

a guest
Jun 24th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input = []) {
  2.     let capacity = Number(input.shift());
  3.     input.pop()
  4.  
  5.     let obj = {};
  6.  
  7.     for (let line of input) {
  8.         let tokens = line.split('=');
  9.         let command = tokens[0];
  10.  
  11.         switch (command) {
  12.             case 'Add':
  13.                 let name = tokens[1];
  14.                 let sent = Number(tokens[2]);
  15.                 let received = Number(tokens[3]);
  16.  
  17.                 if (!obj.hasOwnProperty(name)) {
  18.                     obj[name] = sent + received;
  19.                 }
  20.                 break;
  21.  
  22.             case 'Message':
  23.                 let sender = tokens[1];
  24.                 let receiver = tokens[2];
  25.                 obj[sender]++;
  26.                 obj[receiver]++;
  27.  
  28.                 if (obj[sender] >= capacity) {
  29.                     console.log(`${sender} reached capacity.`);
  30.                     delete obj[sender]
  31.                 }
  32.                 else if (obj[receiver] >= capacity) {
  33.                     console.log(`${receiver} reached capacity.`);
  34.                     delete obj[receiver]
  35.                 }
  36.                 break;
  37.  
  38.             case 'Empty':
  39.                 let username = tokens[1];
  40.  
  41.                 if (username === 'All') {
  42.                     for (const prop of Object.getOwnPropertyNames(obj)) {
  43.                         delete obj[prop];
  44.                     }
  45.                 }
  46.                 else if (obj.hasOwnProperty(username)) {
  47.                     delete obj[username];
  48.                 }
  49.  
  50.                 break;
  51.         }
  52.     }
  53.  
  54.     let orderedNames = Object.entries(obj).sort((a, b) => a[1] - b[1] && b[0].localeCompare(a[0]));
  55.  
  56.     console.log(orderedNames);
  57.  
  58. }
  59.  
  60. solve([
  61.     '20',
  62.     'Add=Mark=3=9',
  63.     'Add=Berry=5=5',
  64.     'Add=Clark=4=0',
  65.     'Empty=Berry',
  66.     'Add=Blake=9=3',
  67.     'Add=Michael=3=9',
  68.     'Add=Amy=9=9',
  69.     'Message=Blake=Amy',
  70.     'Message=Michael=Amy',
  71.     'Statistics'
  72. ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement