Advertisement
vladovip

09.ArenaTiers_Ascoc Arrays_ Exercise

Mar 8th, 2022
934
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.   let obj = {};
  3.  
  4.   for (let line of input) {
  5.     if (line === "Ave Cesar") {
  6.       break;
  7.     }
  8.     let element = line.split(" ");
  9.     if (element[1] === "->") {
  10.       let theLine = line.split(" -> ");
  11.       let gladiator = theLine[0];
  12.       let technique = theLine[1];
  13.       let skillAmount = Number(theLine[2]);
  14.       if (!obj.hasOwnProperty(gladiator)) {
  15.         obj[gladiator] = {};
  16.       }
  17.       if (
  18.         !obj[gladiator].hasOwnProperty(technique) ||
  19.         obj[gladiator][technique] < skillAmount
  20.       ) {
  21.         obj[gladiator][technique] = skillAmount;
  22.       }
  23.     } else if (element[1] === "vs") {
  24.       let theLine = line.split(" vs ");
  25.       let gladiator1 = theLine[0];
  26.       let gladiator2 = theLine[1];
  27.       if (obj.hasOwnProperty(gladiator1) && obj.hasOwnProperty(gladiator2)) {
  28.         let gladiator1Techniques = obj[gladiator1];
  29.         let gladiator2Techniques = obj[gladiator2];
  30.         for (let key in gladiator1Techniques) {
  31.           if (gladiator2Techniques.hasOwnProperty(key)) {
  32.             if (gladiator1Techniques[key] > gladiator2Techniques[key]) {
  33.               delete obj[gladiator2];
  34.             } else if (gladiator1Techniques[key] < gladiator2Techniques[key]) {
  35.               delete obj[gladiator1];
  36.             }
  37.           }
  38.         }
  39.       }
  40.     }
  41.   }
  42.   for (let key in obj) {
  43.     let sum = 0;
  44.     let outsideObj = obj[key];
  45.     for (let insideKey in outsideObj) {
  46.       sum += outsideObj[insideKey];
  47.     }
  48.     outsideObj["sum"] = sum;
  49.   }
  50.   //console.log(obj);
  51.  
  52.   Object.entries(obj)
  53.     .sort((a, b) => b[1].sum - a[1].sum || a[0].localeCompare(b[0]))
  54.     .forEach((element) => {
  55.       console.log(`${element[0]}: ${element[1].sum} skill`);
  56.       delete element[1].sum;
  57.       Object.entries(element[1])
  58.         .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
  59.         .forEach((element) => {
  60.           console.log(` - ${element[0]} <!> ${element[1]}`);
  61.         });
  62.     });
  63. }
  64. solve([
  65.   "Peter -> BattleCry -> 400",
  66.   "Alex -> PowerPunch -> 300",
  67.   "Stefan -> Duck -> 200",
  68.   "Stefan -> Tiger -> 250",
  69.   "Ave Cesar",
  70. ]);
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement