georgiev955

05. Card Game

Jul 5th, 2023
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.     let valueObj = {
  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 typeObj = {
  18.         'S': 4,
  19.         'H': 3,
  20.         'D': 2,
  21.         'C': 1,
  22.     }
  23.     let result = {};
  24.  
  25.     for (const line of input) {
  26.         let [name, cards] = line.split(': ');
  27.         if (result.hasOwnProperty(name)) {
  28.             let oldCardsArr = result[name];
  29.             let cardsArr = cards.split(', ');
  30.             for (const card of cardsArr) {
  31.                 if (!oldCardsArr.includes(card)) {
  32.                     oldCardsArr.push(card);
  33.                 }
  34.             }
  35.             result[name] = oldCardsArr;
  36.         } else {
  37.             let cardsArr = cards.split(', ');
  38.             let uniqueArr = [];
  39.             for (const card of cardsArr) {
  40.                 if (!uniqueArr.includes(card)) {
  41.                     uniqueArr.push(card);
  42.                 }
  43.             }
  44.             result[name] = uniqueArr;
  45.         }
  46.     }
  47.  
  48.     for (const [name, cards] of Object.entries(result)) {
  49.         let sum = 0;
  50.         for (const card of cards) {
  51.             let cardAsArray = card.split('');
  52.             let cardType = cardAsArray.pop();
  53.             let cardValue = cardAsArray.join('');
  54.             sum += valueObj[cardValue] * typeObj[cardType];
  55.         }
  56.         result[name] = sum;
  57.     }
  58.  
  59.     for (const key in result) {
  60.         console.log(`${key}: ${result[key]}`);
  61.     }
  62. }
Add Comment
Please, Sign In to add comment