Liliana797979

star enigma - fundamentals

Aug 2nd, 2021
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ///@(?<name>[A-Za-z]+)[^@:!\->]*:(?<population>\d+)[^@:!\->]*!(?<command>[A|D])![^@:!\->]*\->(?<soldier>\d+)/g;
  2.  
  3. function starEnigma(input) {
  4.  
  5.     let numberMessages = Number(input.shift());
  6.     let planets = [];
  7.     let patternStar = /[star]/g;
  8.  
  9.     for (let command of input) {
  10.         let counter = 0;
  11.         let splitArray = command.split("");
  12.         for (let i = 0; i < splitArray.length; i++) {
  13.             let currentChar = splitArray[i].toLowerCase();
  14.             if (currentChar.match(patternStar)) {
  15.                 counter++;
  16.             }
  17.         }
  18.  
  19.         for (let i = 0; i < splitArray.length; i++) {
  20.             let charCode = splitArray[i].charCodeAt(0);
  21.             let result = String.fromCharCode(charCode - counter);
  22.             splitArray[i] = result;
  23.         }
  24.  
  25.         let finalString = splitArray.join("");
  26.         planets.push(finalString)
  27.     }
  28.  
  29.     let attackedCount = 0;
  30.     let attackedPlanets = [];
  31.     let destroyedCount = 0;
  32.     let destroyedPlanets = [];
  33.     //let patternPlanetMessage = /@(?<name>[A-Z][a-z]+)[^-@!>\W]*:(?<population>[\d]+)[^-@!>\d]*!(?<command>[AD])![^-@!>]*->(?<soldiers>[\d]+)/g;
  34.     let patternPlanetMessage = /@(?<name>[A-Za-z]+)[^@:!\->]*:(?<population>\d+)[^@:!\->]*!(?<command>[A|D])![^@:!\->]*\->(?<soldier>\d+)/g;
  35.  
  36.     let planetInfo = patternPlanetMessage.exec(planets);
  37.  
  38.     while (planetInfo !== null) {
  39.         let name = planetInfo.groups['name'];
  40.         let attackCommand = planetInfo.groups['command'];
  41.  
  42.         switch (attackCommand) {
  43.             case "A":
  44.                 attackedCount++
  45.                 attackedPlanets.push(name);
  46.                 break;
  47.  
  48.             case "D":
  49.                 destroyedCount++;
  50.                 destroyedPlanets.push(name);
  51.                 break;
  52.         }
  53.  
  54.         planetInfo = patternPlanetMessage.exec(planets);
  55.     }
  56.  
  57.     attackedPlanets.sort((a, b) => a.localeCompare(b));
  58.     destroyedPlanets.sort((a, b) => a.localeCompare(b));
  59.  
  60.     console.log(`Attacked planets: ${attackedCount}`);
  61.     if (attackedPlanets.length > 0) {
  62.         for (let planet of attackedPlanets) {
  63.             console.log(`-> ${planet}`);
  64.         }
  65.     }
  66.     console.log(`Destroyed planets: ${destroyedCount}`);
  67.     if (destroyedPlanets.length > 0) {
  68.         for (let planet of destroyedPlanets) {
  69.             console.log(`-> ${planet}`);
  70.         }
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment