Advertisement
miroLLL

CARDS

Jul 10th, 2020
1,818
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solution(input) {
  2.  
  3.     let players = generateHands(input);
  4.     let cardMapper = {
  5.         p: {
  6.             'J': 11,
  7.             'Q': 12,
  8.             'K': 13,
  9.             'A': 14
  10.         },
  11.         t: {
  12.             'S': 4,
  13.             'H': 3,
  14.             'D': 2,
  15.             'C': 1
  16.         }
  17.     };
  18.  
  19.     Object.keys(players).forEach((player) => {
  20.         console.log(`${player}: ${totalDeckPower(players[player])}`);
  21.     });
  22.  
  23.     function totalDeckPower(cardsSet) {
  24.         let totalPower = 0;
  25.  
  26.         cardsSet.forEach((card) => {
  27.             let tokens = card.split('');
  28.  
  29.             let value = tokens.slice(0, tokens.length - 1).join(''); // 10... :H
  30.             let suit = tokens.slice(-1).join('');
  31.  
  32.             let p = 0;
  33.  
  34.             if (!cardMapper.p[value]) { // between 2 ... 10
  35.                 p = Number(value);
  36.             } else {
  37.                 p = cardMapper.p[value];
  38.             }
  39.  
  40.             totalPower += (p * cardMapper.t[suit]);
  41.         });
  42.  
  43.         return totalPower;
  44.     }
  45.  
  46.     function generateHands(arr) {
  47.         let obj = {};
  48.  
  49.         arr.forEach((playerInfo) => {
  50.             let [player, cards] = playerInfo.split(': ');
  51.  
  52.             if (!obj[player]) {
  53.                 obj[player] = new Set(cards.split(', '))
  54.             } else {
  55.                 cards.split(', ').forEach((card) => {
  56.                     obj[player].add(card);
  57.                 });
  58.             }
  59.         });
  60.  
  61.         return obj;
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement