Advertisement
Pijomir

Arena Tier

Nov 4th, 2023
734
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function manageGladiators(input) {
  2.     let gladiatorsList = {};
  3.     while (input.length > 0) {
  4.         let el = input.shift();
  5.         if (el === 'Ave Cesar') {
  6.             break;
  7.         } else {
  8.             if (!el.includes('vs')) {
  9.                 let [name, technique, skillLevel] = el.split(' -> ');
  10.                 skillLevel = Number(skillLevel);
  11.                 if (!gladiatorsList.hasOwnProperty(name)) {
  12.                     gladiatorsList[name] = { [technique]: skillLevel };
  13.                 } else {
  14.                     if (gladiatorsList[name].hasOwnProperty(technique)) {
  15.                         if (skillLevel < gladiatorsList[name][technique]) {
  16.                             skillLevel = gladiatorsList[name][technique];
  17.                         }
  18.                     }
  19.  
  20.                     gladiatorsList[name][technique] = skillLevel;
  21.                 }
  22.             } else {
  23.                 let [firstGladiator, secondGladiator] = el.split(' vs ');
  24.                 if (gladiatorsList.hasOwnProperty(firstGladiator) && gladiatorsList.hasOwnProperty(secondGladiator)) {
  25.                     let firstTechnicks = Object.keys(gladiatorsList[firstGladiator]);
  26.                     let secondTechnicks = Object.keys(gladiatorsList[secondGladiator]);
  27.                     let equalTechnique = undefined;
  28.                     for (let technique of firstTechnicks) {
  29.                         if (secondTechnicks.includes(technique)) {
  30.                             equalTechnique = technique;
  31.                             break;
  32.                         }
  33.                     }
  34.  
  35.                     if (equalTechnique) {
  36.                         gladiatorsList[firstGladiator][equalTechnique] > gladiatorsList[secondGladiator][equalTechnique]
  37.                             ? delete gladiatorsList[secondGladiator]
  38.                             : delete gladiatorsList[firstGladiator];
  39.                     }
  40.                 }
  41.             }
  42.         }
  43.     }
  44.  
  45.     for (let [name, techniqueAndSkill] of Object.entries(gladiatorsList)) {
  46.         let totalSkill = Object.values(techniqueAndSkill).reduce((a, b) => a + b, 0);
  47.         gladiatorsList[name] = [totalSkill, techniqueAndSkill];
  48.     }
  49.  
  50.     let sortedList = Object.entries(gladiatorsList).sort((a, b) => b[1][0] - a[1][0] || a[0].localeCompare(b[0]));
  51.     sortedList.forEach(a => {
  52.         console.log(`${a[0]}: ${a[1][0]} skill`);
  53.         let sortedTechnics = Object.entries(a[1][1]).sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).map(a => `- ${a[0]} <!> ${a[1]}`).join('\n');
  54.         console.log(sortedTechnics);
  55.     });
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement