Advertisement
dimipan80

Exams - Rolland Garros

Apr 6th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2.  
  3. function solve(args) {
  4.     var playersArr, object, pattern, key;
  5.  
  6.     object = {};
  7.     pattern = /(.+?)\s?vs\.\s?(.+?)\s?\:\s?([\d\s-]+)/g;
  8.     args.forEach(function (input) {
  9.         var matcher, pl1, pl2, results;
  10.  
  11.         input = input.replace(/\s+/g, ' ');
  12.         while (matcher = pattern.exec(input)) {
  13.             pl1 = matcher[1];
  14.             pl2 = matcher[2];
  15.             results = matcher[3].split(/\s+/);
  16.         }
  17.  
  18.         buildObjectPlayer(pl1, results, object, true);
  19.         buildObjectPlayer(pl2, results, object, false);
  20.     });
  21.  
  22.     playersArr = [];
  23.     for (key in object) {
  24.         if (object.hasOwnProperty(key)) {
  25.             playersArr.push(object[key]);
  26.         }
  27.     }
  28.  
  29.     playersArr.sort(function (obj1, obj2) {
  30.         return (obj2.matchesWon !== obj1.matchesWon) ? obj2.matchesWon - obj1.matchesWon
  31.             : (obj2.setsWon !== obj1.setsWon) ? obj2.setsWon - obj1.setsWon
  32.             : (obj2.gamesWon !== obj1.gamesWon) ? obj2.gamesWon - obj1.gamesWon
  33.             : obj1.name.localeCompare(obj2.name);
  34.     });
  35.  
  36.     console.log(JSON.stringify(playersArr));
  37.  
  38.     function buildObjectPlayer(playerName, resultsArr, object, isFirstPl) {
  39.         var setWins, setLost;
  40.  
  41.         if (!(playerName in object)) {
  42.             object[playerName] = {
  43.                 'name': playerName, 'matchesWon': 0, 'matchesLost': 0, 'setsWon': 0,
  44.                 setsLost: 0, 'gamesWon': 0, 'gamesLost': 0
  45.             };
  46.         }
  47.  
  48.         setWins = 0;
  49.         setLost = 0;
  50.         resultsArr.forEach(function (set) {
  51.             set = set.split('-');
  52.             if ((isFirstPl && parseInt(set[0]) > parseInt(set[1])) ||
  53.                 (!isFirstPl && parseInt(set[0]) < parseInt(set[1]))) {
  54.                 setWins += 1;
  55.             } else {
  56.                 setLost += 1;
  57.             }
  58.  
  59.             if (isFirstPl) {
  60.                 object[playerName].gamesWon += parseInt(set[0]);
  61.                 object[playerName].gamesLost += parseInt(set[1]);
  62.             } else {
  63.                 object[playerName].gamesWon += parseInt(set[1]);
  64.                 object[playerName].gamesLost += parseInt(set[0]);
  65.             }
  66.         });
  67.  
  68.         if (setWins > setLost) {
  69.             object[playerName].matchesWon += 1;
  70.         } else {
  71.             object[playerName].matchesLost += 1;
  72.         }
  73.  
  74.         object[playerName].setsWon += setWins;
  75.         object[playerName].setsLost += setLost;
  76.     }
  77. }
  78.  
  79. solve([
  80.     'Novak Djokovic vs. Roger Federer : 6-3 6-3',
  81.     'Roger    Federer    vs.        Novak Djokovic    :         6-2 6-3',
  82.     'Rafael Nadal vs. Andy Murray : 4-6 6-2 5-7',
  83.     'Andy Murray vs. David Ferrer : 6-4 7-6',
  84.     'Tomas Bedrych vs. Kei Nishikori : 4-6 6-4 6-3 4-6 5-7',
  85.     'Grigor Dimitrov vs. Milos Raonic : 6-3 4-6 7-6 6-2',
  86.     'Pete Sampras vs. Andre Agassi : 2-1',
  87.     'Boris Beckervs.Andre                   Agassi:2-1']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement