Guest User

Untitled

a guest
Aug 27th, 2020
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function startSeason(input) {
  2.     const map = new Map();
  3.  
  4.     for (let i = 0; i <= input.length - 1; i++) {
  5.  
  6.         if (input[i].includes('->')) {
  7.             let [gladiator, technique, skill] = input[i].split(' -> ');
  8.             skill = Number(skill);
  9.  
  10.             if (!map.has(gladiator)) {
  11.                 let innerMap = new Map();
  12.                 innerMap.set(technique, skill);
  13.                 map.set(gladiator, innerMap);
  14.             } else {
  15.                 let innerMap = map.get(gladiator);
  16.                 if (!innerMap.has(technique)) {
  17.                     innerMap.set(technique, skill);
  18.                 } else {
  19.                     let currentPoints = map.get(gladiator).get(technique);
  20.                     if (currentPoints < skill) {
  21.                         map.get(gladiator).set(technique, skill);
  22.                     }
  23.                 }
  24.             }
  25.  
  26.  
  27.         } else {
  28.             let [gladiator1, gladiator2] = input[i].split(' vs ');
  29.             if (map.has(gladiator1) && map.has(gladiator2)) {
  30.                 let canFight = false;
  31.                 for (let technique of map.get(gladiator1).keys()) {
  32.                     if (map.get(gladiator2).has(technique)) {
  33.                         canFight = true;
  34.                         break;
  35.                     }
  36.                 }
  37.                 if (canFight) {
  38.                     let pointsGladiator1 = findTotalPoints(gladiator1);
  39.                     let pointsGladiator2 = findTotalPoints(gladiator2);
  40.  
  41.                     if (pointsGladiator1>pointsGladiator2) {
  42.                         map.delete(gladiator2);
  43.                     } else if (pointsGladiator2>pointsGladiator1) {
  44.                         map.delete(gladiator1);
  45.                     }
  46.                 }
  47.             }
  48.  
  49.         }
  50.     }
  51.  
  52.     Array.from(map.keys()).sort((a,b)=>findTotalPoints(b)-findTotalPoints(a) || a.localeCompare(b)).forEach(element => {
  53.        console.log(element+": "+findTotalPoints(element)+" skill");
  54.        Array.from(map.get(element).entries()).sort((a,b)=>Number(b[1]-Number(a[1])) || a[0].localeCompare(b[0]))
  55.        .forEach(e=>console.log(`- ${e[0]} <!> ${e[1]}`));
  56.     });
  57.  
  58.     function findTotalPoints(name) {
  59.        return Array.from(map.get(name).values()).reduce((a,b)=>a+b);
  60.     }
  61. }
Add Comment
Please, Sign In to add comment