Advertisement
Lulunga

Final Exam 01.Concert my solution

Aug 1st, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.    let bandToPrint = input.pop();
  3.    let totalTime = 0;
  4.  
  5.    let bands = {};
  6.    let playTimes = {};
  7.  
  8.  
  9.    const add = (bandName, members) => {
  10.       if (!bands[bandName]) {
  11.          bands[bandName] = [];
  12.       }
  13.       let currentMembers = bands[bandName];
  14.       let newMembers = [...currentMembers, ...members];
  15.       newMembers = [...new Set(newMembers)];
  16.       bands[bandName] = newMembers;
  17.    };
  18.  
  19.    const play = (bandName, time) => {
  20.       if (!playTimes[bandName]) {
  21.          playTimes[bandName] = 0;
  22.       }
  23.       playTimes[bandName] += time;
  24.       totalTime += time;
  25.    };
  26.  
  27.    for (let line of input) {
  28.       if (line === 'start of concert') {
  29.          break;
  30.       }
  31.       let [command, band, otherParams] = line.split('; ');
  32.       if (command === 'Add') {
  33.          let members = otherParams.split(', ');
  34.          add(band, members);
  35.       } else if (command === 'Play') {
  36.          let time = Number(otherParams);
  37.          play(band, time);
  38.       }
  39.  
  40.    }
  41.    console.log(`Total time: ${totalTime}`);
  42.  
  43.    let sortedPlayTime = Object.entries(playTimes)
  44.       .sort((a, b) => {
  45.          return b[1] - a[1] || a[0].localeCompare(b[0]);
  46.       })
  47.       .forEach(element => {
  48.          console.log(`${element[0]} -> ${element[1]}`);
  49.       });
  50.    console.log(bandToPrint);
  51.    bands[bandToPrint].forEach(element => {
  52.       console.log(`=> ${element}`);
  53.    });
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement