Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- function solve(args) {
- var playersArr, object, pattern, key;
- object = {};
- pattern = /(.+?)\s?vs\.\s?(.+?)\s?\:\s?([\d\s-]+)/g;
- args.forEach(function (input) {
- var matcher, pl1, pl2, results;
- input = input.replace(/\s+/g, ' ');
- while (matcher = pattern.exec(input)) {
- pl1 = matcher[1];
- pl2 = matcher[2];
- results = matcher[3].split(/\s+/);
- }
- buildObjectPlayer(pl1, results, object, true);
- buildObjectPlayer(pl2, results, object, false);
- });
- playersArr = [];
- for (key in object) {
- if (object.hasOwnProperty(key)) {
- playersArr.push(object[key]);
- }
- }
- playersArr.sort(function (obj1, obj2) {
- return (obj2.matchesWon !== obj1.matchesWon) ? obj2.matchesWon - obj1.matchesWon
- : (obj2.setsWon !== obj1.setsWon) ? obj2.setsWon - obj1.setsWon
- : (obj2.gamesWon !== obj1.gamesWon) ? obj2.gamesWon - obj1.gamesWon
- : obj1.name.localeCompare(obj2.name);
- });
- console.log(JSON.stringify(playersArr));
- function buildObjectPlayer(playerName, resultsArr, object, isFirstPl) {
- var setWins, setLost;
- if (!(playerName in object)) {
- object[playerName] = {
- 'name': playerName, 'matchesWon': 0, 'matchesLost': 0, 'setsWon': 0,
- setsLost: 0, 'gamesWon': 0, 'gamesLost': 0
- };
- }
- setWins = 0;
- setLost = 0;
- resultsArr.forEach(function (set) {
- set = set.split('-');
- if ((isFirstPl && parseInt(set[0]) > parseInt(set[1])) ||
- (!isFirstPl && parseInt(set[0]) < parseInt(set[1]))) {
- setWins += 1;
- } else {
- setLost += 1;
- }
- if (isFirstPl) {
- object[playerName].gamesWon += parseInt(set[0]);
- object[playerName].gamesLost += parseInt(set[1]);
- } else {
- object[playerName].gamesWon += parseInt(set[1]);
- object[playerName].gamesLost += parseInt(set[0]);
- }
- });
- if (setWins > setLost) {
- object[playerName].matchesWon += 1;
- } else {
- object[playerName].matchesLost += 1;
- }
- object[playerName].setsWon += setWins;
- object[playerName].setsLost += setLost;
- }
- }
- solve([
- 'Novak Djokovic vs. Roger Federer : 6-3 6-3',
- 'Roger Federer vs. Novak Djokovic : 6-2 6-3',
- 'Rafael Nadal vs. Andy Murray : 4-6 6-2 5-7',
- 'Andy Murray vs. David Ferrer : 6-4 7-6',
- 'Tomas Bedrych vs. Kei Nishikori : 4-6 6-4 6-3 4-6 5-7',
- 'Grigor Dimitrov vs. Milos Raonic : 6-3 4-6 7-6 6-2',
- 'Pete Sampras vs. Andre Agassi : 2-1',
- 'Boris Beckervs.Andre Agassi:2-1']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement