Advertisement
VeselaVideva

Final Exam 13.12.2020 - Problem 03

Dec 19th, 2020
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function problemThree(input) {
  2.     let capacity = input.shift();
  3.     capacity = Number(capacity);
  4.     let messages = {};
  5.  
  6.     let line;
  7.     while ((line = input.shift()) !== 'Statistics') {
  8.         let actions = line.split('=');
  9.         if (actions[0] === 'Add') {
  10.             let userName = actions[1];
  11.             let sent = Number(actions[2]);
  12.             let received = Number(actions[3]);
  13.             if (!messages.hasOwnProperty(userName)) {
  14.                 messages[userName] = {sent: 0, received: 0};
  15.                 messages[userName].sent = sent;
  16.                 messages[userName].received = received;
  17.             }
  18.         } else if (actions[0] === 'Message') {
  19.             let sender = actions[1];
  20.             let receiver = actions[2];
  21.             if (messages.hasOwnProperty(sender) && messages.hasOwnProperty(receiver)) {
  22.                 messages[sender].sent += 1;
  23.                 messages[receiver].received += 1;
  24.                 if (messages[sender].sent + messages[sender].received >= capacity) {
  25.                     console.log(`${sender} reached the capacity!`);
  26.                     delete messages[sender];
  27.                 }
  28.                 if (messages[receiver].sent + messages[receiver].received >= capacity) {
  29.                     console.log(`${receiver} reached the capacity!`);
  30.                     delete messages[receiver];
  31.                 }
  32.             }
  33.         } else if (actions[0] === 'Empty') {
  34.             let userName = actions[1];
  35.             if (messages.hasOwnProperty(userName)) {
  36.                 delete messages[userName];
  37.             }
  38.             if (userName === 'All') {
  39.                 for (let user of Object.keys(messages)) {
  40.                     delete messages[user];
  41.                 }
  42.             }
  43.         }
  44.     }
  45.  
  46.     let countOfUsers = Object.keys(messages).length;
  47.  
  48.     console.log(`Users count: ${countOfUsers}`);
  49.  
  50.     let sorted = Object.entries(messages).sort(compare);
  51.  
  52.     function compare(a, b) {
  53.         return b[1].received - a[1].received || a[0].localeCompare(b[0]);
  54.     }
  55.  
  56.     for (let [user, value] of sorted) {
  57.         value = messages[user].sent + messages[user].received;
  58.         console.log(`${user} - ${value}`);
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement