Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(array)
- {
- let teams=new Map();
- for(let input of array)
- {
- let inputArray=input.split(" -> ");
- let teamName=inputArray[0];
- let pilotName=inputArray[1];
- let pilotPoints=parseFloat(inputArray[2]);
- if(!teams.has(teamName))
- {
- teams.set(teamName,new Map());
- }
- if((!teams.get(teamName).has(pilotName)))
- {
- teams.get(teamName).set(pilotName,0);
- }
- teams.get(teamName).set(pilotName,teams.get(teamName).get(pilotName)+pilotPoints);
- }
- teams=Array.from(teams);
- teams=teams.map(a=>[a[0],Array.from(a[1])]);
- // teams=teams.map(a=>a.map(b=>[b[0],Array.from(b[1])]));
- teams.sort(sortTeams);
- teams=teams.map(a=>a.sort(sortPilots));
- for(let i=0;i<Math.min(3,teams.length);i++)
- {
- console.log(teams[i][0]+": "+getTeamTotalPoints(teams[i]));
- for(let player of teams[i][1])
- {
- console.log("-- "+player[0]+" -> "+player[1]);
- }
- }
- function sortTeams(team1,team2)
- {
- if(getTeamTotalPoints(team1)>getTeamTotalPoints(team2))
- {
- return -1;
- }
- if(getTeamTotalPoints(team1)<getTeamTotalPoints(team2))
- {
- return 1;
- }
- return 0;
- }
- function sortPilots(pilot1,pilot2)
- {
- if(pilot1[1]>pilot2[1])
- {
- return -1;
- }
- if(pilot1[1]<pilot2[1])
- {
- return -1;
- }
- return 0;
- }
- function getTeamTotalPoints(team)
- {
- let sum=0;
- let players=team[1].map(a=>a[1]);
- for(let i=0;i<players.length;i++)
- {
- sum+=players[i];
- }
- return sum;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement