Advertisement
Lulunga

Associative Arrays 05. Card Game

Jul 6th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function cardGame(input) {
  2.     let cardPower = {
  3.         '2': 2,
  4.         '3': 3,
  5.         '4': 4,
  6.         '5': 5,
  7.         '6': 6,
  8.         '7': 7,
  9.         '8': 8,
  10.         '9': 9,
  11.         '10': 10,
  12.         'J': 11,
  13.         'Q': 12,
  14.         'K': 13,
  15.         'A': 14
  16.     };
  17.     let cardType = {
  18.         'S': 4,
  19.         'H': 3,
  20.         'D': 2,
  21.         'C': 1
  22.     };
  23.     let players = {};
  24.  
  25.     for (let line of input) {
  26.         let [name, cards] = line.split(': ');
  27.         let uniqueCards = new Set(cards.split(', '));
  28.         uniqueCards = [...uniqueCards];
  29.         if (!players.hasOwnProperty(name)) {
  30.             players[name] = uniqueCards;
  31.         } else {
  32.             for (const card of uniqueCards) {
  33.                 if (!players[name].includes(card)) {
  34.                     players[name].push(card);
  35.                 }
  36.             }
  37.         }
  38.     }
  39.     for (let name in players) {
  40.         let deck = players[name];
  41.         let sum = 0;
  42.         for (let card of deck) {
  43.             let tokens = card.split('');
  44.             if (tokens.length === 2) {
  45.                 sum += calculateProduct(tokens[0], tokens[1]);
  46.             } else {
  47.                 sum += calculateProduct(tokens[0] + tokens[1], tokens[2]);
  48.             }
  49.  
  50.         }
  51.         console.log(`${name}: ${sum}`);
  52.     }
  53.     function calculateProduct(power, type) {
  54.         let cardPowerMultiplier = cardPower[power];
  55.         let cardTypeMultiplier = cardType[type];
  56.         return cardPowerMultiplier * cardTypeMultiplier;
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement