Advertisement
Guest User

Untitled

a guest
Jun 24th, 2020
101
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][0]++;
  26.         obj[receiver][1]++;
  27.  
  28.         if (obj[sender][0] + obj[sender][1] >= capacity) {
  29.           console.log(`${sender} reached the capacity!`);
  30.           delete obj[sender];
  31.         } else if (obj[receiver][0] + obj[receiver][1] >= capacity) {
  32.           console.log(`${receiver} reached the capacity!`);
  33.           delete obj[receiver];
  34.         }
  35.         break;
  36.  
  37.       case 'Empty':
  38.         let username = tokens[1];
  39.  
  40.         if (username === 'All') {
  41.           for (const prop of Object.getOwnPropertyNames(obj)) {
  42.             delete obj[prop];
  43.           }
  44.         } else if (obj.hasOwnProperty(username)) {
  45.           delete obj[username];
  46.         }
  47.  
  48.         break;
  49.     }
  50.   }
  51.  
  52.   let orderedNames = Object.entries(obj).sort((a, b) =>b[1][1] -  a[1][1]|| b[0].localeCompare(b[0]));
  53.  
  54.   console.log(`Users count: ${orderedNames.length}`);
  55.   orderedNames.forEach(a => console.log(`${a[0]} - ${a[1][0] + a[1][1]}`));
  56.  
  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. ]);
  73.  
  74. solve([
  75.   '10',
  76.   'Add=Mark=5=4',
  77.   'Add=Clark=3=5',
  78.   'Add=Berg=9=0',
  79.   'Add=Kevin=0=0',
  80.   'Message=Berg=Kevin',
  81.   'Statistics',
  82. ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement