Advertisement
Todorov_Stanimir

04. MOBA Challenger

Jul 27th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function mobaChalenger(input) {
  2.     let players = {};
  3.     while ((line = input.shift()) !== 'Season end') {
  4.         if (!line.includes(' vs ')) {
  5.             let [player, position, skill] = line.split(' -> ');
  6.             if (!(player in players)) {
  7.                 players[player] = {
  8.                     totalSkill: Number(skill),
  9.                     positions: { [position]: Number(skill) }
  10.                 }
  11.             } else {
  12.                 if (!Object.keys(players[player].positions).includes(position)) {
  13.                     players[player].positions[position] = Number(skill);
  14.                     players[player].totalSkill += Number(skill);
  15.                 } else {
  16.                     if (players[player].positions[position] < Number(skill)) {
  17.                         players[player].totalSkill += (Number(skill) - players[player].positions[position])
  18.                         players[player].positions[position] = Number(skill);
  19.                     }
  20.                 }
  21.             }
  22.         } else {
  23.             let [player1, player2] = line.split(' vs ');
  24.             if (player1 in players && player2 in players) {
  25.                 for (let position of Object.keys(players[player1].positions)) {
  26.                     if (Object.keys(players[player2].positions).includes(position)) {
  27.                         if (players[player1].totalSkill > players[player2].totalSkill) {
  28.                             delete players[player2];
  29.                         } else if (players[player1].totalSkill < players[player2].totalSkill) {
  30.                             delete players[player1];
  31.                         }
  32.                         break;
  33.                     }
  34.                 }
  35.             }
  36.         }
  37.     }
  38.     Object.entries(players).sort((a, b) => b[1].totalSkill - a[1].totalSkill || a[0].localeCompare(b[0]))
  39.         .forEach(player => {
  40.             console.log(`${player[0]}: ${player[1].totalSkill} skill`);
  41.  
  42.             Object.entries(player[1].positions).sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
  43.                 .forEach(position => console.log(`- ${position[0]} <::> ${position[1]}`));
  44.         });
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement