Advertisement
Guest User

Untitled

a guest
Sep 25th, 2019
886
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // *Arena tier
  2. function solve(input) {
  3.     let gladiators = {};
  4.  
  5.     input.forEach(line => {
  6.             if (line.includes('->')) {
  7.                 let [glad, technique, skill] = line.split(' -> ');
  8.  
  9.                 if (gladiators[glad]) {
  10.                     gladiators[glad].skills += +skill;
  11.                     if (gladiators[glad].techniques[technique]) {
  12.                         gladiators[glad].techniques[technique] = +skill;
  13.                     } else {
  14.                         gladiators[glad].techniques[technique] = +skill;
  15.                     }
  16.                 } else {
  17.                     gladiators[glad] = {
  18.                         techniques: {
  19.                             [technique]: +skill
  20.                         },
  21.                         skills: +skill
  22.                     };
  23.                 }
  24.             }
  25.             else if (line.includes('vs')) {
  26.                 let [oponentOne, oponentTwo] = line.split(' vs ');
  27.                 if (gladiators[oponentOne] && gladiators[oponentTwo]) {
  28.                     let oponentOneTechniques = Object.keys(gladiators[oponentOne].techniques);
  29.                     let oponentTwoTechniques = Object.keys(gladiators[oponentTwo].techniques);
  30.                     let oponentOneSkills = gladiators[oponentOne].skills;
  31.                     let oponentTwoSkills = gladiators[oponentTwo].skills;
  32.  
  33.                     let common = oponentOneTechniques.filter(item => oponentTwoTechniques.includes(item));
  34.  
  35.                     if (common.length > 0) {
  36.                         if (oponentOneSkills > oponentTwoSkills) {
  37.                             delete gladiators[oponentTwo];
  38.                         } else if (oponentOneSkills < oponentTwoSkills) {
  39.                             delete gladiators[oponentOne];
  40.                         }
  41.                     }
  42.                 }
  43.             }
  44.     });
  45.  
  46.     const sortingGlads = (a, b) => b[1].skills - a[1].skills || a[0].localeCompare(b[0]);
  47.     const sortingTechs = (a, b) => b[1] - a[1] || a[0].localeCompare(b[0]);
  48.  
  49.     for (let [k, v] of Object.entries(gladiators).sort(sortingGlads)) {
  50.         console.log(`${k}: ${gladiators[k].skills} skill`);
  51.         for (let [key, value] of Object.entries(v)) {
  52.             if (key == 'techniques') {
  53.                 for (let [k, v] of Object.entries(value).sort(sortingTechs)) {
  54.                     console.log(`- ${k} <!> ${v}`);
  55.                 }
  56.             }
  57.         }
  58.     }
  59. }
  60.  
  61. solve(['Pesho -> BattleCry -> 400',
  62.     'Gosho -> PowerPunch -> 300',
  63.     'Stamat -> Duck -> 200',
  64.     'Stamat -> Tiger -> 250',
  65.     'Ave Cesar']);
  66. // solve([ 'Pesho -> Duck -> 400',
  67. //     'Julius -> Shield -> 150',
  68. //     'Gladius -> Heal -> 200',
  69. //     'Gladius -> Support -> 250',
  70. //     'Gladius -> Shield -> 250',
  71. //     'Pesho vs Gladius',
  72. //     'Gladius vs Julius',
  73. //     'Gladius vs Gosho',
  74. //     'Ave Cesar' ]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement