maymunskoa

Concert (Final Exam 240719)

Mar 25th, 2020
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.   let startBand;
  3.   let totaltime = 0;
  4.   let bands = {};
  5.  
  6.   for (const line of input) {
  7.     if (line === "start of concert") {
  8.       startBand = input[input.length - 1];
  9.       break;
  10.     }
  11.     let [command, band, token] = line.split("; ");
  12.     switch (command) {
  13.       case "Add":
  14.         let arr = token.split(", ");
  15.         if (!bands.hasOwnProperty(band)) {
  16.           let members = new Set();
  17.           bands[band] = {
  18.             members: members,
  19.             time: 0
  20.           };
  21.         }
  22.         arr.forEach(member => bands[band].members.add(member));
  23.         break;
  24.  
  25.       case "Play":
  26.         let time = Number(token);
  27.         if (!bands.hasOwnProperty(band)) {
  28.           let groupers = new Set();
  29.           bands[band] = {
  30.             members: groupers,
  31.             time: 0
  32.           };
  33.         }
  34.         bands[band].time += time;
  35.         totaltime += time;
  36.         break;
  37.     }
  38.   }
  39.  
  40.   console.log(`Total time: ${totaltime}`);
  41.   Object.entries(bands)
  42.     .sort((a, b) => {
  43.       if (b[1].time === a[1].time) {
  44.         return a[0].localeCompare(b[0]);
  45.       }
  46.       return b[1].time - a[1].time;
  47.     })
  48.     .forEach(pair => {
  49.       console.log(`${pair[0]} -> ${pair[1].time}`);
  50.     });
  51.  
  52.   console.log(startBand);
  53.   Array.from(bands[startBand].members).forEach(member =>
  54.     console.log(`=> ${member}`)
  55.   );
  56. }
Advertisement
Add Comment
Please, Sign In to add comment