Todorov_Stanimir

09. Arena Tier

Jul 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function arenaTier(input) {
  2.     let sheetGladiators = new Map();
  3.  
  4.     let currentInput = input.shift().split(' -> ');
  5.     while (currentInput[0] !== 'Ave Cesar') {
  6.  
  7.         if (currentInput[0].includes(' vs ')) {
  8.             let [gladiator1, gladiator2] = currentInput[0].split(' vs ');
  9.             if (sheetGladiators.has(gladiator1) && sheetGladiators.has(gladiator2)) {
  10.                 let techniquesGladiator1 = sheetGladiators.get(gladiator1);
  11.                 let techniquesGladiator2 = sheetGladiators.get(gladiator2);
  12.                 let theSameTechnique = false;
  13.                 for (let i = 0; i < techniquesGladiator1.length; i++) {
  14.                     for (let y = 0; y < techniquesGladiator2.length; y++) {
  15.                         if (techniquesGladiator1[i][0] === techniquesGladiator2[y][0]) {
  16.                             theSameTechnique = true;
  17.                             break;
  18.                         }
  19.                     }
  20.                     if (theSameTechnique === true) {
  21.                         break;
  22.                     }
  23.                 }
  24.                 if (theSameTechnique) {
  25.                     let totalSkillGladiator1 = 0;
  26.                     let totalSkillGladiator2 = 0;
  27.                     for (let i = 0; i < techniquesGladiator1.length; i++) {
  28.                         totalSkillGladiator1 += techniquesGladiator1[i][1];
  29.                     }
  30.                     for (let i = 0; i < techniquesGladiator2.length; i++) {
  31.                         totalSkillGladiator2 += techniquesGladiator2[i][1];
  32.                     }
  33.                     if (totalSkillGladiator1 > totalSkillGladiator2) {
  34.                         sheetGladiators.delete(gladiator2);
  35.                     } else if (totalSkillGladiator2 > totalSkillGladiator1) {
  36.                         sheetGladiators.delete(gladiator1);
  37.                     }
  38.                 }
  39.  
  40.             }
  41.         } else {
  42.             let gladiator = currentInput[0];
  43.             let technique = currentInput[1];
  44.             let skill = Number(currentInput[2]);
  45.             if (sheetGladiators.has(gladiator)) {
  46.                 let techniques = sheetGladiators.get(gladiator);
  47.                 let techniqeexist = false;
  48.                 for (let indexTechnige in techniques) {
  49.                     if (techniques[indexTechnige][0] === technique) {
  50.                         if (techniques[indexTechnige][1] < skill) {
  51.                             techniques[indexTechnige][1] = skill;
  52.                         }
  53.                         techniqeexist = true;
  54.                         break;
  55.                     }
  56.                 }
  57.                 if (techniqeexist === false) {
  58.                     techniques.push([technique, skill]);
  59.                     sheetGladiators.set(gladiator, techniques);
  60.                 }
  61.             } else {
  62.                 sheetGladiators.set(gladiator, [
  63.                     [technique, skill]
  64.                 ]);
  65.             }
  66.         }
  67.         currentInput = input.shift().split(' -> ');
  68.     }
  69.     let output = [...(sheetGladiators.entries())];
  70.  
  71.     for (curGladiator of output) {
  72.         curGladiator[1].sort((a, b) => b[1] - a[1]);
  73.     }
  74.     output.sort(mySort)
  75.  
  76.     function mySort(a, b) {
  77.         let totalSkillGladiatorA = 0;
  78.         let totalSkillGladiatorB = 0;
  79.         for (let i = 0; i < a[1].length; i++) {
  80.             totalSkillGladiatorA += a[1][i][1];
  81.         }
  82.         for (let i = 0; i < b[1].length; i++) {
  83.             totalSkillGladiatorB += b[1][i][1];
  84.         }
  85.         if (totalSkillGladiatorA < totalSkillGladiatorB) {
  86.             return 1;
  87.         } else if (totalSkillGladiatorA > totalSkillGladiatorB) {
  88.             return -1;
  89.         }
  90.  
  91.     }
  92.  
  93.     for (let curGladiator of output) {
  94.         let totalSkillGladiator = 0
  95.         for (let i = 0; i < curGladiator[1].length; i++) {
  96.             totalSkillGladiator += curGladiator[1][i][1];
  97.         }
  98.         console.log(`${curGladiator[0]}: ${totalSkillGladiator} skill`);
  99.         curGladiator[1].forEach(element => {
  100.             console.log(`- ${element[0]} <!> ${element[1]}`);
  101.         });
  102.     }
  103. }
Add Comment
Please, Sign In to add comment