kStoikow

Untitled

Oct 29th, 2019
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.     let command = input.shift();
  3.     let acc = {};
  4.  
  5.     let follower = (obj, name) => {
  6.         if (!obj.hasOwnProperty(name)) {
  7.             obj[name] = {};
  8.             obj[name]['likes'] = 0;
  9.             obj[name]['comments'] = 0;
  10.             return obj;
  11.         }
  12.         return;
  13.     };
  14.     let like = (obj, name, count) => {
  15.         if (!obj.hasOwnProperty(name)) {
  16.             obj[name] = {};
  17.             obj[name]['likes'] = Number(count);
  18.             obj[name]['comments'] = 0;
  19.             return obj;
  20.         } else {
  21.             obj[name]['likes'] += Number(count);
  22.             return obj;
  23.         }
  24.     };
  25.     let comment = (obj, name) => {
  26.         if (!obj.hasOwnProperty(name)) {
  27.             obj[name] = {};
  28.             obj[name]['comments'] = 1;
  29.             obj[name]['likes'] = 0;
  30.             return obj;
  31.         } else {
  32.             obj[name]['comments']++;
  33.             return obj;
  34.         }
  35.     };
  36.     let block = (obj, name) => {
  37.         if (obj.hasOwnProperty(name)) {
  38.             delete obj[name];
  39.             return obj;
  40.         }
  41.         console.log(`${name} doesn't exist.`);
  42.        return;
  43.    }
  44.  
  45.    while (command != 'Log out') {
  46.        if (command.includes('New follower')) {
  47.            let [, user] = command.split(': ');
  48.            follower(acc, user);
  49.  
  50.        } else if (command.includes('Like')) {
  51.            let [, user, count] = command.split(': ');
  52.            like(acc, user, count);
  53.  
  54.        } else if (command.includes('Comment')) {
  55.            let [, user] = command.split(': ');
  56.            comment(acc, user);
  57.  
  58.        } else if (command.includes('Blocked')) {
  59.            let [, user] = command.split(': ');
  60.            block(acc, user);
  61.        }
  62.  
  63.        command = input.shift();
  64.    }
  65.  
  66.    console.log(`${Object.keys(acc).length} followers`);
  67.    Object
  68.        .entries(acc)
  69.        .sort((a, b) => Object.values(b[1]).reduce((acc, e) => acc + e, 0) -
  70.            Object.values(a[1]).reduce((acc, e) => acc + e, 0) || a[0].localeCompare(b[0]))
  71.        .forEach(([name, nameValues]) => {
  72.            let statistic = Object.values(nameValues).reduce((acc, e) => acc + e, 0);
  73.            console.log(`${name}: ${statistic}`);
  74.        });
  75. }
Advertisement
Add Comment
Please, Sign In to add comment