Advertisement
Guest User

ArenaTier

a guest
Sep 5th, 2020
629
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function arenaTier(input) {
  2.     let arena = {};
  3.     let totalSkills = {};
  4.  
  5.  
  6.     for (let line of input) {
  7.         if (line === 'Ave Cesar') {
  8.             break;
  9.         } else {
  10.             let [gladiator, technique, skill] = line.split(' -> ');
  11.             skill = Number(skill);
  12.  
  13.             if (technique !== undefined) {
  14.                 if (!arena[gladiator]) {
  15.                     arena[gladiator] = {};
  16.                     arena[gladiator][technique] = skill;
  17.                 } else {
  18.                     if (!arena[gladiator][technique]) {
  19.                         arena[gladiator][technique] = skill;
  20.                     } else {
  21.                         if (arena[gladiator][technique] < skill) {
  22.                             arena[gladiator][technique] = skill;
  23.                         }
  24.                     }
  25.                 }
  26.                 getTotalSkills()
  27.  
  28.             } else {
  29.                 let [firstName, secondName] = gladiator.split(' vs ');
  30.                 if (arena.hasOwnProperty(firstName) && arena.hasOwnProperty(secondName)) {
  31.                     let battleWin = false;
  32.                     for (let techniques of Object.entries(arena[firstName])) {
  33.                         for (let techniquesTwo of Object.entries(arena[secondName])) {
  34.  
  35.                             if (techniquesTwo[0] === techniques[0]) {
  36.  
  37.                                 if (getTotalSkills(secondName) > getTotalSkills(firstName)) {
  38.                                     delete totalSkills[firstName];
  39.                                     delete arena[firstName];
  40.                                     battleWin = true;
  41.                                     break;
  42.                                 } else if (getTotalSkills(secondName) < getTotalSkills(firstName)) {
  43.                                     delete totalSkills[secondName];
  44.                                     delete arena[secondName];
  45.                                     battleWin = true;
  46.                                     break;
  47.                                 }
  48.                             }
  49.                         }
  50.                         if (battleWin) {
  51.                             break;
  52.                         }
  53.                     }
  54.                 }
  55.             }
  56.         }
  57.     }
  58.  
  59.     function getTotalSkills(name) {
  60.  
  61.         for (let gladiator of Object.entries(arena)) {
  62.             let sumOfSkills = 0;
  63.             for (let technique of Object.entries(gladiator[1])) {
  64.                 sumOfSkills += technique[1];
  65.             }
  66.             totalSkills[gladiator[0]] = sumOfSkills;
  67.  
  68.         }
  69.         return totalSkills[name];
  70.     }
  71.  
  72.     let sortedByTotalSkills = Object.entries(totalSkills).sort((a, b) => {
  73.         return b[1] - a[1] || a[0].localeCompare(b[0])
  74.     });
  75.  
  76.     for (let i = 0; i < sortedByTotalSkills.length; i++) {
  77.         console.log(`${sortedByTotalSkills[i][0]}: ${sortedByTotalSkills[i][1]} skill`);
  78.  
  79.         let sortedTechEntries = Object.entries(arena[sortedByTotalSkills[i][0]]).sort((a, b) => {
  80.             return b[1] - a[1] || a[0].localeCompare(b[0]);
  81.         });
  82.  
  83.         for (let i = 0; i < sortedTechEntries.length; i++) {
  84.             console.log(`- ${sortedTechEntries[i][0]} <!> ${sortedTechEntries[i][1]}`);
  85.         }
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement