Advertisement
tetris555

card-game

Nov 5th, 2022
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(arr) {
  2.     const players = new Map(); // playerName => set of player cards
  3.     const power = {
  4.         '2': 2,
  5.         '3': 3,
  6.         '4': 4,
  7.         '5': 5,
  8.         '6': 6,
  9.         '7': 7,
  10.         '8': 8,
  11.         '9': 9,
  12.         '10': 10,
  13.         'J': 11,
  14.         'Q': 12,
  15.         'K': 13,
  16.         'A': 14
  17.     };
  18.     const multiplier = {
  19.         'S': 4,
  20.         'H': 3,
  21.         'D': 2,
  22.         'C': 1
  23.     };
  24.  
  25.     for (const entry of arr) {
  26.         let [name, cards] = entry.split(': ');
  27.  
  28.         if (!players.has(name)) {
  29.             players.set(name, new Set(cards.split(', ')));
  30.         }
  31.         else {
  32.             for (const card of cards.split(', ')) {
  33.                 players.get(name).add(card);
  34.             }
  35.         }
  36.     }
  37.  
  38.     const playersPower = new Map(); // playerName => totalPower
  39.  
  40.     [...players.entries()].forEach(([name, cards]) => {
  41.         const score = [...cards].map(x => {
  42.             const {p, m} = x.match(/(?<p>\d+|J|Q|K|A)(?<m>[SHDC])/).groups;
  43.             return power[p] * multiplier[m];
  44.         }).reduce((x, y) => x + y, 0);
  45.  
  46.         playersPower.set(name, score);
  47.     });
  48.  
  49.     [...playersPower.entries()].forEach(([name, pow]) => console.log(`${name}: ${pow}`));
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement