Advertisement
Guest User

ArenaTier

a guest
Oct 1st, 2020
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.  
  3.     const gladiators = {};
  4.  
  5.     for (const line of input) {
  6.         if (line === 'Ave Cesar') {
  7.             break;
  8.         }
  9.  
  10.         if (!line.includes(' vs ')) {
  11.             const [gladiator, technique, skill] = line.split(' -> ');
  12.             if (!gladiators.hasOwnProperty(gladiator)) {
  13.                 gladiators[gladiator] = {};
  14.             }
  15.             if (!gladiators[gladiator].hasOwnProperty(technique)) {
  16.                 gladiators[gladiator][technique] = 0;
  17.             }
  18.             if (gladiators[gladiator][technique] < skill) {
  19.                 gladiators[gladiator][technique] = Number(skill);
  20.             }
  21.         } else if (line.includes(' vs ')) {
  22.             const [gladiator1, gladiator2] = line.split(' vs ');
  23.             if (gladiators.hasOwnProperty(gladiator1) && gladiators.hasOwnProperty(gladiator2)) {
  24.                 const firstTechniques = gladiators[gladiator1];
  25.                 const secondTechniques = gladiators[gladiator2];
  26.  
  27.                 for (let technique of Object.entries(firstTechniques)) {
  28.                     if (secondTechniques.hasOwnProperty(technique[0])) {
  29.                         const firstPower = getTotalSkill(gladiators[gladiator1]);
  30.                         const secondPower = getTotalSkill(gladiators[gladiator2]);
  31.                         if (firstPower > secondPower) {
  32.                             delete gladiators[gladiator2];
  33.                             break;
  34.                         } else if (secondPower > firstPower) {
  35.                             delete gladiators[gladiator1];
  36.                             break;
  37.                         }
  38.                     }
  39.                 }
  40.             }
  41.         }
  42.     }
  43.  
  44.     Object.entries(gladiators)
  45.         .sort((a, b) => getTotalSkill(b[1]) - getTotalSkill(a[1]) || a[0].localeCompare(b[0]))
  46.         .forEach(kvp => {
  47.             console.log(`${kvp[0]}: ${getTotalSkill(kvp[1])} skill`);
  48.             Object.entries(kvp[1])
  49.                 .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
  50.                 .forEach(kvp => console.log(`- ${kvp[0]} <!> ${kvp[1]}`));
  51.         });
  52.  
  53.     function getTotalSkill(man) {
  54.         let totalSkill = 0;
  55.         Object.keys(man).forEach(technique => totalSkill += Number(man[technique]));
  56.         return totalSkill;
  57.     }
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement