Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(input = []) {
- let capacity = Number(input.shift());
- input.pop();
- let obj = {};
- for (let line of input) {
- let tokens = line.split('=');
- let command = tokens[0];
- switch (command) {
- case 'Add':
- let name = tokens[1];
- let sent = Number(tokens[2]);
- let received = Number(tokens[3]);
- if (!obj.hasOwnProperty(name)) {
- obj[name] = [sent, received];
- }
- break;
- case 'Message':
- let sender = tokens[1];
- let receiver = tokens[2];
- obj[sender][0]++;
- obj[receiver][1]++;
- if (obj[sender][0] + obj[sender][1] >= capacity) {
- console.log(`${sender} reached the capacity!`);
- delete obj[sender];
- } else if (obj[receiver][0] + obj[receiver][1] >= capacity) {
- console.log(`${receiver} reached the capacity!`);
- delete obj[receiver];
- }
- break;
- case 'Empty':
- let username = tokens[1];
- if (username === 'All') {
- for (const prop of Object.getOwnPropertyNames(obj)) {
- delete obj[prop];
- }
- } else if (obj.hasOwnProperty(username)) {
- delete obj[username];
- }
- break;
- }
- }
- let orderedNames = Object.entries(obj).sort((a, b) =>b[1][1] - a[1][1]|| b[0].localeCompare(b[0]));
- console.log(`Users count: ${orderedNames.length}`);
- orderedNames.forEach(a => console.log(`${a[0]} - ${a[1][0] + a[1][1]}`));
- }
- solve([
- '20',
- 'Add=Mark=3=9',
- 'Add=Berry=5=5',
- 'Add=Clark=4=0',
- 'Empty=Berry',
- 'Add=Blake=9=3',
- 'Add=Michael=3=9',
- 'Add=Amy=9=9',
- 'Message=Blake=Amy',
- 'Message=Michael=Amy',
- 'Statistics'
- ]);
- solve([
- '10',
- 'Add=Mark=5=4',
- 'Add=Clark=3=5',
- 'Add=Berg=9=0',
- 'Add=Kevin=0=0',
- 'Message=Berg=Kevin',
- 'Statistics',
- ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement