Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve (input) {
- let list = {}
- for (let inp of input) {
- if (inp === 'Season end') {
- break
- }
- if (inp.includes('->')) {
- let [name, position, skill] = inp.split(' -> ')
- skill = +skill
- if (!list.hasOwnProperty(name)) {
- list[name] = {
- params: new Map(),
- totalSkills: 0
- }
- list[name].params.set(position, skill)
- list[name].totalSkills += skill
- } else {
- if (list[name].params.has(position)) {
- let existSkill = list[name].params.get(position)
- if (existSkill < skill) {
- list[name].totalSkills -= existSkill
- list[name].params.set(position, skill)
- list[name].totalSkills += skill
- }
- } else {
- list[name].params.set(position, skill)
- list[name].totalSkills += skill
- }
- }
- } else {
- let [player1, player2] = inp.split(' vs ')
- if (list.hasOwnProperty(player1) && list.hasOwnProperty(player2)) {
- let currentParam1 = [...list[player1].params]
- let currentParam2 = [...list[player2].params]
- for (let [key, value] of currentParam1) {
- let currentSkill = key
- for (let [key1, value1] of currentParam2) {
- let currentSkill2 = key1
- if (currentSkill === currentSkill2) {
- if (value > value1) {
- delete list[player2]
- } else if (value1 > value) {
- delete list[player1]
- }
- }
- }
- }
- }
- }
- }
- let sorted = Object.entries(list).sort((a, b) => {
- let result = b[1].totalSkills - a[1].totalSkills
- if (result === 0) {
- result = a[0].localeCompare(b[0])
- }
- return result
- })
- sorted.forEach(x => {
- console.log(`${x[0]}: ${x[1].totalSkills} skill`)
- Array.from(x[1].params)
- .sort((a, b) => b[1] - a[1])
- .forEach(([position, skill]) =>
- console.log(`- ${position} <::> ${skill}`)
- )
- })
- }
Add Comment
Please, Sign In to add comment