Advertisement
didkoslawow

Untitled

Mar 17th, 2023
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function softUniStudents(input) {
  2.    const courses = {};
  3.  
  4.    for (const line of input) {
  5.      if (line.includes(':')) {
  6.        let [courseName, capacity] = line.split(': ');
  7.        capacity = Number(capacity);
  8.  
  9.        if (!courses.hasOwnProperty(courseName)) {
  10.          courses[courseName] = {
  11.            capacity,
  12.            students: [],
  13.          };
  14.        } else {
  15.          courses[courseName].capacity += capacity;
  16.        }
  17.      } else {
  18.        let [userName, credits, email, course] = line.split(/[\[]|(?:[\]][with email]+) | joins /gm);
  19.        credits = Number(credits);
  20.  
  21.        if (courses.hasOwnProperty(course) && courses[course].capacity > 0) {
  22.          courses[course].students.push({
  23.            user: userName,
  24.            credits: credits,
  25.            email: email,
  26.          });
  27.          courses[course].capacity--;
  28.        }
  29.      }
  30.    }
  31.    const sortedByStudentsCount = Object.entries(courses)
  32.    .sort((a, b) => Object.entries(b[1].students).length - Object.entries(a[1].students).length);
  33.  
  34.    for (const course of sortedByStudentsCount) {
  35.      console.log(`${course[0]}: ${course[1].capacity} places left`);
  36.  
  37.      const sortedByCredits = Object.entries(course[1].students).sort(
  38.        (a, b) => b[1].credits - a[1].credits
  39.      );
  40.      for (const student of sortedByCredits) {
  41.        console.log(
  42.          `--- ${student[1].credits}: ${student[1].user}, ${student[1].email}`
  43.        );
  44.      }
  45.    }
  46.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement