Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function softUniStudents(input) {
- const courses = {};
- for (const line of input) {
- if (line.includes(':')) {
- let [courseName, capacity] = line.split(': ');
- capacity = Number(capacity);
- if (!courses.hasOwnProperty(courseName)) {
- courses[courseName] = {
- capacity,
- students: [],
- };
- } else {
- courses[courseName].capacity += capacity;
- }
- } else {
- let [userName, credits, email, course] = line.split(/[\[]|(?:[\]][with email]+) | joins /gm);
- credits = Number(credits);
- if (courses.hasOwnProperty(course) && courses[course].capacity > 0) {
- courses[course].students.push({
- user: userName,
- credits: credits,
- email: email,
- });
- courses[course].capacity--;
- }
- }
- }
- const sortedByStudentsCount = Object.entries(courses)
- .sort((a, b) => Object.entries(b[1].students).length - Object.entries(a[1].students).length);
- for (const course of sortedByStudentsCount) {
- console.log(`${course[0]}: ${course[1].capacity} places left`);
- const sortedByCredits = Object.entries(course[1].students).sort(
- (a, b) => b[1].credits - a[1].credits
- );
- for (const student of sortedByCredits) {
- console.log(
- `--- ${student[1].credits}: ${student[1].user}, ${student[1].email}`
- );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement