nikolayneykov

Untitled

Apr 15th, 2019
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve (input) {
  2.   let list = {}
  3.   for (let inp of input) {
  4.     if (inp === 'Season end') {
  5.       break
  6.     }
  7.     if (inp.includes('->')) {
  8.       let [name, position, skill] = inp.split(' -> ')
  9.       skill = +skill
  10.       if (!list.hasOwnProperty(name)) {
  11.         list[name] = {
  12.           params: new Map(),
  13.           totalSkills: 0
  14.         }
  15.         list[name].params.set(position, skill)
  16.         list[name].totalSkills += skill
  17.       } else {
  18.         if (list[name].params.has(position)) {
  19.           let existSkill = list[name].params.get(position)
  20.           if (existSkill < skill) {
  21.             list[name].totalSkills -= existSkill
  22.             list[name].params.set(position, skill)
  23.             list[name].totalSkills += skill
  24.           }
  25.         } else {
  26.           list[name].params.set(position, skill)
  27.           list[name].totalSkills += skill
  28.         }
  29.       }
  30.     } else {
  31.       let [player1, player2] = inp.split(' vs ')
  32.       if (list.hasOwnProperty(player1) && list.hasOwnProperty(player2)) {
  33.         let currentParam1 = [...list[player1].params]
  34.         let currentParam2 = [...list[player2].params]
  35.         for (let [key, value] of currentParam1) {
  36.           let currentSkill = key
  37.           for (let [key1, value1] of currentParam2) {
  38.             let currentSkill2 = key1
  39.             if (currentSkill === currentSkill2) {
  40.               if (value > value1) {
  41.                 delete list[player2]
  42.               } else if (value1 > value) {
  43.                 delete list[player1]
  44.               }
  45.             }
  46.           }
  47.         }
  48.       }
  49.     }
  50.   }
  51.  
  52.   let sorted = Object.entries(list).sort((a, b) => {
  53.     let result = b[1].totalSkills - a[1].totalSkills
  54.     if (result === 0) {
  55.       result = a[0].localeCompare(b[0])
  56.     }
  57.     return result
  58.   })
  59.  
  60.   sorted.forEach(x => {
  61.     console.log(`${x[0]}: ${x[1].totalSkills} skill`)
  62.  
  63.     Array.from(x[1].params)
  64.       .sort((a, b) => b[1] - a[1])
  65.       .forEach(([position, skill]) =>
  66.         console.log(`- ${position} <::> ${skill}`)
  67.       )
  68.   })
  69. }
Add Comment
Please, Sign In to add comment