vladovip

CollectionDemRealms_ JS FUND

Sep 4th, 2022 (edited)
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.     let demonBook = {};
  3.     let regexp = /\s*,\s*/g;
  4.     let demonNames = input.split(regexp);
  5.  
  6.     let nameTest = /[^\s ,]+/;
  7.     for (const name of demonNames) {
  8.         //check if test is valid, if not - skip it
  9.         if (nameTest.test(name)) {
  10.             //calculate demonHealth
  11.             let healthPattern = /[^0-9\+\-\*\/\.]/g;
  12.             let charsToSum = name.match(healthPattern);
  13.             let demonHealth = 0;
  14.             for (const char of charsToSum) {
  15.                 let value = char.charCodeAt(0);
  16.                 demonHealth += value;
  17.             }
  18.  
  19.             //calculate demonPower
  20.             //add & substract
  21.             let demonPower = 0;
  22.             let powerPattern = /[\+\-]*\d+(\.\d+)*/g;
  23.             let charsToCalc = name.match(powerPattern);
  24.             if (charsToCalc == null) {
  25.                 demonPower = 0;
  26.             } else {
  27.                 let numsToCalc = charsToCalc.map(Number);
  28.                 numsToCalc.map(x => demonPower += x);
  29.  
  30.             }
  31.             //multiply and divide
  32.             let multiDivTest = /[\*\/]/g;
  33.             let multiDivMatches = name.match(multiDivTest);
  34.             if (multiDivMatches != null) {
  35.                 for (const oper of multiDivMatches) {
  36.                     if (oper == "*") {
  37.                         demonPower *= 2;
  38.                     } else if (oper == "/") {
  39.                         demonPower /= 2;
  40.                     }
  41.                 }
  42.             }
  43.  
  44.             if (!demonBook.hasOwnProperty(name)) {
  45.                 demonBook[name] = [demonHealth, demonPower];
  46.             }
  47.  
  48.         } else {
  49.             continue;
  50.         }
  51.     }
  52.     let sorted = Object.entries(demonBook);
  53.     sorted.sort((a, b) => a[0].localeCompare(b[0]));
  54.     for (const [name, arr] of sorted) {
  55.         console.log(`${name} - ${arr[0]} health, ${arr[1].toFixed(2)} damage`);
  56.     }
  57. }
  58.  
  59. solve('M3ph-0.5s-0.5t0.0**');
  60. solve('M3ph1st0**, Azazel');
  61. solve('Gos/ho');
  62. solve('M3ph1st0**,     Azazel');
Add Comment
Please, Sign In to add comment