Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2020
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. function starEnigma(input = []) {
  2. let messagesCount = Number(input.shift());
  3. const keyPattern = /[star]/gi;
  4. let messagePattern = /@(?<planetName>[A-Za-z]+)[^@\-!:>]*:(?<population>\d+)[^@\-!:>]*!(?<attackType>[AD])![^@\-!:>]*->(?<soldierCount>\d+)/g;
  5.  
  6. let planets = { A: [], D: [] };
  7.  
  8. for (let i = 0; i < messagesCount; i++) {
  9. let encryptedMessage = input.shift();
  10. let key = encryptedMessage.match(keyPattern).length;
  11. let decryptedMessage = encryptedMessage
  12. .split("")
  13. .map(char => String.fromCharCode(char.charCodeAt(0) - key))
  14. .join("");
  15.  
  16. let info = null;
  17. while ((info = messagePattern.exec(decryptedMessage)) !== null) {
  18. let planetName = info.groups["planetName"];
  19. let attackType = info.groups["attackType"];
  20. planets[attackType].push(planetName);
  21. }
  22. }
  23.  
  24. console.log(`Attacked planets: ${planets.A.length}`);
  25. planets.A.sort((a, b) => a.localeCompare(b)).forEach(planet =>
  26. console.log(`-> ${planet}`)
  27. );
  28. console.log(`Destroyed planets: ${planets.D.length}`);
  29. planets.D.sort((a, b) => a.localeCompare(b)).forEach(planet =>
  30. console.log(`-> ${planet}`)
  31. );
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement