Advertisement
bebo231312312321

Untitled

Mar 6th, 2023
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function arenaTier(data) {
  2.     let gladiatorPool = {};
  3.     let isOver = false;
  4.  
  5.     for (let index = 0; index < data.length; index++) {
  6.         if (data[index] === "Ave Cesar") {
  7.             isOver = true;
  8.             break;
  9.         }
  10.         let tokens = data[index].split(" -> ");
  11.         if (tokens.length > 1) {
  12.             let gladiatorName = tokens[0];
  13.             let technique = tokens[1];
  14.             let skill = Number(tokens[2]);
  15.             if (!gladiatorPool.hasOwnProperty(gladiatorName)) {
  16.                 gladiatorPool[gladiatorName] = new Map();
  17.  
  18.             }
  19.             if (gladiatorPool[gladiatorName].has(technique) || (gladiatorPool[gladiatorName].get(technique) < skill)) {
  20.  
  21.              
  22.             } else {
  23.                 gladiatorPool[gladiatorName].set(technique, skill);
  24.             }
  25.  
  26.         } else {
  27.             let [gladiatorA, gladiatorB] = tokens[0].split(" vs ");
  28.             if (gladiatorPool.hasOwnProperty(gladiatorA) && gladiatorPool.hasOwnProperty(gladiatorB)) {
  29.                 for (let [technique, skill] of Array.from(gladiatorPool[gladiatorA])) {
  30.                     if (gladiatorPool[gladiatorB].has(technique)) {
  31.                         totalSkillPoints(gladiatorA);
  32.                         totalSkillPoints(gladiatorB);
  33.                         if (totalSkillPoints(gladiatorA) > totalSkillPoints(gladiatorB)) {
  34.                             delete gladiatorPool[gladiatorB];
  35.                         } else if (totalSkillPoints(gladiatorA) < totalSkillPoints(gladiatorB)) {
  36.                             delete gladiatorPool[gladiatorA];
  37.                         }
  38.                         isOver = false
  39.                         break;
  40.                     }
  41.                 }
  42.                
  43.             }
  44.         }
  45.     }
  46.  
  47.     function totalSkillPoints(gladiator) {
  48.         let sum = 0;
  49.         for (let [technique, skill] of Array.from(gladiatorPool[gladiator])) {
  50.             sum += Number(skill);
  51.         }
  52.         return sum;
  53.     }
  54.  
  55.     if (isOver = true) {
  56.         let totalSkill = {};
  57.         for (let [gladiatorName, skills] of Object.entries(gladiatorPool)) {
  58.             if (totalSkillPoints(gladiatorName) !== 0) {
  59.                 totalSkill[gladiatorName] = totalSkillPoints(gladiatorName);
  60.             }
  61.         }
  62.         let firstSorting = Object.entries(totalSkill).sort((arrA, arrB) => {
  63.             return arrB[1] - arrA[1] || arrA[0].localeCompare(arrB[0]);
  64.         });
  65.         for (const [gladiator, totalSkill] of firstSorting) {
  66.             console.log(`${gladiator}: ${totalSkill} skill`);
  67.             let secondSorting = Array.from(gladiatorPool[gladiator]).sort((a, b) => {
  68.                 return b[1] - a[1] || a[0].localeCompare(b[0]);
  69.             });
  70.             for (const [technique, skill] of secondSorting) {
  71.                 console.log(`- ${technique} <!> ${skill}`);
  72.             }
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement