function concert(input) { let index = 0; let line = input[index]; index++; let record = {}; let totalTime = 0; while (line !== 'Start!') { let menu = line.split('; '); let command = menu[0]; let bandName = menu[1]; let time = Number(menu[2]); let info = {}; let members = []; if (command === 'Add') { let members = menu.slice(2).join('').split(', '); for (let member of members) { if (!record.hasOwnProperty(bandName)) { record[bandName] = info; record[bandName].members = members; record[bandName].time = 0; } else if (!record[bandName].members.includes(member)) { record[bandName].members.push(member); } } } else if (command === 'Play') { if (!record.hasOwnProperty(bandName)) { record[bandName] = info; record[bandName].members = members; record[bandName].time = time; totalTime += time; } else { record[bandName].time += time; totalTime += time; } } line = input[index]; index++; } console.log(`Total time: ${totalTime}`); for (let bandName in record) { console.log(`${bandName} -> ${record[bandName].time}`); } for (let bandName in record) { console.log(bandName); for (let member of record[bandName].members) { console.log(`=> ${member}`); } break; } } concert(["Play; The Beatles; 2584", "Add; The Beatles; John Lennon, George Harrison, Ringo Starr", "Add; The Beatles; Paul McCartney, George Harrison", "Add; The Rolling Stones; Brian Jones, Mick Jagger, Keith Richards", "Play; The Rolling Stones; 4239", "Start!"]); console.log('---'); concert(["Add; The Beatles; John Lennon, Paul McCartney", "Add; The Beatles; Paul McCartney, George Harrison", "Add; The Beatles; George Harrison, Ringo Starr", "Play; The Beatles; 3698", "Play; The Beatles; 3828", "Start!"]); console.log('---'); concert(["Add; The Beatles; John Lennon, Paul McCartney, George Harrison, Ringo Starr", "Play; The Beatles; 4569", "Play; The Beatles; 2456", "Play; Queen; 1250", "Add; Queen; Freddie Mercury, Brian May, Roger Taylor, John Deacon", "Play; Queen; 6215", "Start!"]);