Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function startSeason(input) {
- const map = new Map();
- for (let i = 0; i <= input.length - 1; i++) {
- if (input[i].includes('->')) {
- let [gladiator, technique, skill] = input[i].split(' -> ');
- skill = Number(skill);
- if (!map.has(gladiator)) {
- let innerMap = new Map();
- innerMap.set(technique, skill);
- map.set(gladiator, innerMap);
- } else {
- let innerMap = map.get(gladiator);
- if (!innerMap.has(technique)) {
- innerMap.set(technique, skill);
- } else {
- let currentPoints = map.get(gladiator).get(technique);
- if (currentPoints < skill) {
- map.get(gladiator).set(technique, skill);
- }
- }
- }
- } else {
- let [gladiator1, gladiator2] = input[i].split(' vs ');
- if (map.has(gladiator1) && map.has(gladiator2)) {
- let canFight = false;
- for (let technique of map.get(gladiator1).keys()) {
- if (map.get(gladiator2).has(technique)) {
- canFight = true;
- break;
- }
- }
- if (canFight) {
- let pointsGladiator1 = findTotalPoints(gladiator1);
- let pointsGladiator2 = findTotalPoints(gladiator2);
- if (pointsGladiator1>pointsGladiator2) {
- map.delete(gladiator2);
- } else if (pointsGladiator2>pointsGladiator1) {
- map.delete(gladiator1);
- }
- }
- }
- }
- }
- Array.from(map.keys()).sort((a,b)=>findTotalPoints(b)-findTotalPoints(a) || a.localeCompare(b)).forEach(element => {
- console.log(element+": "+findTotalPoints(element)+" skill");
- Array.from(map.get(element).entries()).sort((a,b)=>Number(b[1]-Number(a[1])) || a[0].localeCompare(b[0]))
- .forEach(e=>console.log(`- ${e[0]} <!> ${e[1]}`));
- });
- function findTotalPoints(name) {
- return Array.from(map.get(name).values()).reduce((a,b)=>a+b);
- }
- }
Add Comment
Please, Sign In to add comment