Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(input){
- class Student{
- constructor(name, grade, score){
- this.name = name;
- this.grade = grade;
- this.score = score;
- }
- nextGrade(){
- this.grade += 1;
- }
- }
- class schoolClass{
- constructor(grade){
- this.grade = grade;
- this.students = [];
- this.grades = [];
- }
- addStudent(name, grades){
- this.students.push(name);
- this.grades.push(grades);
- }
- listOfStudents(){
- return this.students.join(', ');
- }
- averageScore(){
- if(this.grades.length > 0){
- let divident = this.grades.reduce((a,b)=>{
- return a+b;
- });
- let divisor = this.grades.length;
- let average = divident / divisor
- return average.toFixed(2);
- }
- }
- }
- let register = [];
- let classes = [];
- for (const record of input) {
- let [first, second, third] = record.split(', ');
- let name = first.split(': ')[1];
- let grade = Number(second.split(': ')[1]);
- let score = Number(third.split(': ')[1]);
- let student = new Student(name, grade, score);
- if( student.score>=3 ){
- student.nextGrade();
- }
- register.push(student);
- classes.push(student.grade);
- }
- let classList = new Set(classes);
- let listOfClasses = [];
- for (const singleClass of Array.from(classList)) {
- let newClass = new schoolClass(singleClass);
- listOfClasses.push(newClass);
- }
- listOfClasses.sort((a,b)=>{
- return a.grade - b.grade;
- })
- for (const one of listOfClasses) {
- for (const student of register) {
- if(one.grade === student.grade){
- if(student.score >= 3){
- one.addStudent(student.name,student.score);
- }
- }
- }
- }
- for (const single of listOfClasses) {
- if(single.students.length > 0){
- console.log(`${single.grade} Grade`);
- console.log(`List of students: ${single.listOfStudents()}`);
- console.log(`Average annual grade from last year: ${Number(single.averageScore()).toFixed(2)}`);
- console.log('');
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment