function cardGame(input) { let playersAndTheirCards = {}; for (let i = 0; i < input.length; i++) { let line = input[i].split(": "); let player = line[0]; let cards = line[1].split(", "); if (player in playersAndTheirCards) { let currentCards = playersAndTheirCards[player]; let allCards=currentCards.concat(cards); let distinctCards=[...new Set(allCards)]; playersAndTheirCards[player]=distinctCards; } else { playersAndTheirCards[player] = cards; } } for(let player in playersAndTheirCards) { let personalScore=0; let cardsArr=playersAndTheirCards[player]; cardsArr.forEach(card => { let kvp=card.split(""); let color=kvp.pop(); let power=kvp.join(""); let value=0; let multiplier=0; switch(power){ case "2": value=2; break; case "3": value=3; break; case "4": value=4; break; case "5": value=5; break; case "6": value=6; break; case "7": value=7; break; case "8": value=8; break; case "9": value=9; break; case "10": value=10; break; case "J": value=11; break; case "Q": value=12; break; case "K": value=13; break; case "A": value=14; break; } switch(color){ case "S":multiplier=4;break; case "H":multiplier=3;break; case "D":multiplier=2;break; case "C":multiplier=1;break; } personalScore+=value*multiplier; }); console.log(`${player}: ${personalScore}`); } } cardGame([ 'Peter: 2C, 4H, 9H, AS, QS', 'Tomas: 3H, 10S, JC, KD, 5S, 10S', 'Andrea: QH, QC, QS, QD', 'Tomas: 6H, 7S, KC, KD, 5S, 10C', 'Andrea: QH, QC, JS, JD, JC', 'Peter: JD, JD, JD, JD, JD, JD' ] )