Advertisement
bebo231312312321

Untitled

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