Advertisement
Guest User

Arena Tier

a guest
Jan 16th, 2022
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(arr) {
  2.  
  3.     let gladiatorsList = {};
  4.  
  5.     for (let list of arr) {
  6.  
  7.         if (list === `Ave Cesar`) {
  8.  
  9.             for (let player of Object.keys(gladiatorsList)) {
  10.                 let totalSkill = Object.values(gladiatorsList[player]).reduce((a, b) => a + b);
  11.                 gladiatorsList[player].totalSkill = totalSkill;
  12.             }
  13.  
  14.             let arrayGladiatorScor = Object.entries(gladiatorsList);
  15.             let sorted = arrayGladiatorScor.sort((a, b) => a[0].localeCompare(b[0])).sort((a, b) => b[1].totalSkill - a[1].totalSkill);
  16.            
  17.             for (let player of sorted) {
  18.  
  19.                 let currentResult = Object.entries(player[1]);
  20.                 let totalSkill = currentResult.pop().toString().split(`,`)[1];
  21.  
  22.                 console.log(`${player[0]}: ${totalSkill} skill`)
  23.  
  24.                 let sortedTechniques = currentResult.sort((a, b) => a[0].localeCompare(b[0])).sort((a, b) => b[1] - (a[1]));
  25.                
  26.                 for (let technique of sortedTechniques) {
  27.                     let [tech, skill] = technique.toString().split(`,`);
  28.                     console.log(`- ${tech} <!> ${skill}`)
  29.                 }
  30.  
  31.             }
  32.  
  33.         } else if (!list.split(` `).includes(`->`)) {
  34.  
  35.             let [gladiator1, gladiator2] = list.split(` vs `);
  36.  
  37.             if (gladiatorsList.hasOwnProperty(gladiator1) && gladiatorsList.hasOwnProperty(gladiator2)) {
  38.  
  39.                 for (let gladiator1Technique of Object.keys(gladiatorsList[gladiator1])) {
  40.                     let gladiator2Techniques = Object.keys(gladiatorsList[gladiator2]);
  41.                     if (gladiator2Techniques.includes(gladiator1Technique)) {
  42.  
  43.                         let glad1TotalSkills = Object.values(gladiatorsList[gladiator1]).reduce((a, b) => a + b);
  44.                         let glad2TotalSkills = Object.values(gladiatorsList[gladiator2]).reduce((a, b) => a + b);
  45.                        
  46.                         if (glad1TotalSkills > glad2TotalSkills) {
  47.                             delete gladiatorsList[gladiator2];
  48.                         } else if (glad2TotalSkills > glad1TotalSkills){
  49.                             delete gladiatorsList[gladiator1]
  50.                         }
  51.                     }
  52.                 }
  53.             }
  54.         } else {
  55.             let [playerName, technique, skill] = list.split(` -> `);
  56.  
  57.             if (!gladiatorsList.hasOwnProperty(playerName)) {
  58.                 gladiatorsList[playerName] = {
  59.                     [technique]: Number(skill),
  60.                 }
  61.             } else if (gladiatorsList[playerName].hasOwnProperty(technique) && gladiatorsList[playerName][technique] < skill) {
  62.                 gladiatorsList[playerName][technique] = Number(skill);
  63.             } else if (!gladiatorsList[playerName].hasOwnProperty(technique)) {
  64.                 gladiatorsList[playerName][technique] = Number(skill);
  65.             }
  66.         }
  67.  
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement