kStoikow

qweqe

Oct 7th, 2019
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.     let armies = [];
  3.  
  4.     for (const line of input) {
  5.         if (line.includes('arrives')) {
  6.             let leader = line.split(" ");
  7.             leader.pop();
  8.             leader = leader.join(' ');
  9.  
  10.             armies.push({ leader, totalCount: 0 });
  11.  
  12.         } else if (line.includes(': ')) {
  13.             let [name, army] = line.split(': ');
  14.             let [armyName, count] = army.split(', ');
  15.  
  16.             for (const lead of armies) {
  17.                 if (lead['leader'] == name) {
  18.                     lead[armyName] = Number(count);
  19.                     lead.totalCount += Number(count);
  20.                 }
  21.             }
  22.  
  23.         } else if (line.includes(' + ')) {
  24.             let [armyName, count] = line.split(' + ');
  25.  
  26.             for (const currLeader of armies) {
  27.                 if (currLeader.hasOwnProperty(armyName)) {
  28.                     currLeader[armyName] += Number(count);
  29.                     currLeader.totalCount += Number(count);
  30.                 }
  31.             }
  32.  
  33.         } else if (line.includes(' defeated')) {
  34.             let name = line.split(" ");
  35.             name.pop();
  36.             name = name.join(' ');
  37.  
  38.             for (const leader of armies) {
  39.                 if (leader['leader'] == name) {
  40.                     let indexOf = armies.indexOf(leader);
  41.                     armies.splice(indexOf, 1);
  42.                 }
  43.             }
  44.         }
  45.     }
  46.  
  47.     armies
  48.         .sort((a, b) => b.totalCount - a.totalCount)
  49.         .forEach(obj => {
  50.             console.log(`${obj['leader']}: ${obj['totalCount']}`);
  51.             delete obj.leader;
  52.             delete obj.totalCount;
  53.             Object.entries(obj).sort((a, b) => (b[1]) - a[1])
  54.                 .forEach(([armyName, count]) => {
  55.                     console.log(`>>> ${armyName} - ${count}`);
  56.                 });
  57.         });
  58. }
Advertisement
Add Comment
Please, Sign In to add comment