Advertisement
Guest User

Untitled

a guest
Jan 29th, 2016
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(arr) {
  2.     var regex = /((?:[a-z]+)(?: [a-z]+)?)\s*-\s*([\S].*[\S])\s*:\s*(\d+)/i;
  3.     var exams = {};
  4.     var student,
  5.         exam,
  6.         result;
  7.     for (var i = 0; i < arr.length; i++) {
  8.         var obj = arr[i];
  9.         var match = obj.match(regex);
  10.         result = Number(match[3].trim());
  11.         student = match[1].trim();
  12.         exam = match[2].trim();
  13.         if (result < 0 || result > 400) {
  14.             continue;
  15.         }
  16.         if (!(exam in exams)) {
  17.             exams[exam] = [];
  18.             exams[exam].push({name: student, result: result, makeUpExams: 0});
  19.             continue;
  20.         }
  21.         for (var j = 0, len = exams[exam].length; j < len; j++) {
  22.             var entry = exams[exam][j];
  23.             if (entry.name === student) {
  24.                 entry.makeUpExams++;
  25.                 entry.result = Math.max(result, entry.result);
  26.                 break;
  27.             }
  28.             if (j === len - 1) {
  29.                 exams[exam].push({name: student, result: result, makeUpExams: 0});
  30.  
  31.             }
  32.         }
  33.     }
  34.  
  35.  
  36.     for (var exam in exams) {
  37.         exams[exam] = exams[exam].sort(function (x,y) {
  38.             if (x.result > y.result) {
  39.                 return -1;
  40.             } else if (x.result < y.result) {
  41.                 return 1;
  42.             }
  43.             if (x.makeUpExams > y.makeUpExams) {
  44.                 return 1;
  45.             } else if (x.makeUpExams < y.makeUpExams) {
  46.                 return -1;
  47.             }
  48.             return x.name.localeCompare(y.name);
  49.         });
  50.     }
  51.     console.log(JSON.stringify(exams));
  52.  
  53. }
  54.  
  55. //var arr = [ 'Peter Jackson - Java : 350',
  56. //    'Jane - JavaScript : 200',
  57. //    'Jane     -    JavaScript :     400',
  58. //    'Simon Cowell - PHP : 100',
  59. //    'Simon Cowell-PHP: 500',
  60. //    'Simon Cowell - PHP : 200' ];
  61. //arr = ['Simon Cowell - PHP : 100',
  62. //    'Simon Cowell-PHP: 500',
  63. //    'Peter Jackson - PHP: 350',
  64. //    'Simon Cowell - PHP : 360'];
  65. //
  66. //solve(arr);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement