Advertisement
AlexanderHristov

Problem 4 – SoftUni Exam Results

Dec 7th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(inputArr) {
  2.  
  3.     let resultsObj = {};
  4.     let languagesObj = {};
  5.     let bannedObj = {};
  6.     let flag = false;
  7.  
  8.     for (let submission of inputArr) {
  9.         if (submission === 'exam finished') {
  10.             break
  11.         } else {
  12.             let [student, language, score] = submission.split('-');
  13.  
  14.             if (!resultsObj.hasOwnProperty(student)) {
  15.                 resultsObj[student] = score;
  16.             }
  17.  
  18.             if (resultsObj[student] < score) {
  19.                 resultsObj[student] = score
  20.             }
  21.  
  22.             if (!languagesObj.hasOwnProperty(language)) {
  23.                 languagesObj[language] = 1;
  24.             } else {
  25.                 languagesObj[language] += 1;
  26.             }
  27.  
  28.             if (submission.includes('banned')) {
  29.                 let name = submission.split('-')[0];
  30.                 bannedObj[name] = 'banned';
  31.                 flag = true;
  32.             }
  33.         }
  34.     }
  35.  
  36.     if (flag === true) {
  37.         let bannedList = Object.keys(bannedObj);
  38.         for (let banned of bannedList) {
  39.             if (Object.keys(resultsObj).includes(banned)) {
  40.                 delete resultsObj[banned];
  41.             }
  42.         }
  43.         delete languagesObj['banned'];
  44.     }
  45.  
  46.     let sortedResultsObj = Object.entries(resultsObj)
  47.         .sort(sortStudents);
  48.     let sortedLanguageObj = Object.entries(languagesObj)
  49.         .sort(sortLanguages);
  50.  
  51.     console.log('Results:');
  52.     sortedResultsObj.forEach(x => console.log(`${x[0]} | ${x[1]}`));
  53.     console.log('Submissions:');
  54.     sortedLanguageObj.forEach(x => console.log(`${x[0]} - ${x[1]}`));
  55.  
  56.     function sortStudents(a, b) {
  57.  
  58.         let [aKey, aSubObj] = a;
  59.         let [bKey, bSubObj] = b;
  60.  
  61.         let firstCriteria = bSubObj[0] - aSubObj[0];
  62.  
  63.         if (firstCriteria === 0) {
  64.             return aKey.localeCompare(bKey);
  65.         }
  66.  
  67.         return firstCriteria
  68.     }
  69.  
  70.     function sortLanguages(a, b) {
  71.  
  72.         let [aKey, aValue] = a;
  73.         let [bKey, bValue] = b;
  74.  
  75.         let firstCriteria = bValue - aValue;
  76.  
  77.         if (firstCriteria === 0) {
  78.             return aKey.localeCompare(bKey);
  79.         }
  80.  
  81.         return firstCriteria
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement