MartenBG

Untitled

Dec 3rd, 2019
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. function solve(arr) {
  2.  
  3. let users = {};
  4. let maxCapacity = Number(arr.shift());
  5.  
  6. for (const input of arr) {
  7.  
  8. let [command, p1, p2, p3] = input.split('=');
  9. if (command === 'Add') {
  10. users = addNewUser(p1, p2, p3, users);
  11. continue;
  12. }
  13. if (command === 'Message') {
  14. users = message(p1, p2, users);
  15. }
  16. if (command === 'Empty') {
  17. users = deleteUser(p1, users);
  18. }
  19. if (command === 'Statistics') {
  20. break;
  21. }
  22. }
  23.  
  24. let catalogue = Object.keys(users);
  25.  
  26. console.log(`Users count: ${catalogue.length}`);
  27.  
  28. catalogue.sort((a, b) => users[b].received - users[a].received || ((a, b) => a.localeCompare(b)));
  29.  
  30. for (const cUser of catalogue) {
  31. let total = users[cUser].sent + users[cUser].received;
  32. console.log(`${cUser} - ${total}`);
  33.  
  34. }
  35.  
  36. function addNewUser(userName, sent, received, obj) {
  37.  
  38. if (!obj[userName]) {
  39. obj[userName] = {
  40. sent: +sent,
  41. received: +received
  42. };
  43. }
  44. return obj;
  45. }
  46.  
  47. function message(sender, receiver, obj) {
  48.  
  49. if (obj[sender] && obj[receiver]) {
  50. obj[sender].sent++;
  51. obj[receiver].received++;
  52.  
  53. let currentSender = obj[sender].sent + obj[sender].received;
  54. if (currentSender >= maxCapacity) {
  55. console.log(`${sender} reached the capacity!`);
  56. delete obj[sender];
  57. }
  58.  
  59.  
  60. let currentRec = obj[receiver].sent + obj[receiver].received;
  61. if (currentRec >= maxCapacity) {
  62. console.log(`${receiver} reached the capacity!`);
  63. delete obj[receiver];
  64. }
  65. }
  66.  
  67. return obj;
  68. }
  69.  
  70. function deleteUser(user, obj) {
  71.  
  72. if (user === 'All') {
  73. obj = {};
  74. }
  75. if (obj[user]) {
  76. delete obj[user];
  77. }
  78. return obj;
  79. }
  80.  
  81. }
  82.  
  83. solve([
  84. '20',
  85. 'Add=Mark=3=9',
  86. 'Add=Berry=5=5',
  87. 'Add=Clark=4=0',
  88. 'Empty=Berry',
  89. 'Add=Blake=9=3',
  90. 'Add=Michael=3=9',
  91. 'Add=Amy=9=9',
  92. 'Message=Blake=Amy',
  93. 'Message=Michael=Amy',
  94. 'Statistics'
  95. ]);
Advertisement
Add Comment
Please, Sign In to add comment