Advertisement
Guest User

StarEnigma

a guest
Apr 3rd, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.64 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6.  
  7. namespace StarEnigma
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int numberOfMessages = int.Parse(Console.ReadLine());
  14.             string decryptingPattern = @"[sSTtaARr]";
  15.             string pattern = @"@([A-Za-z]+)[^@\-!:>]*:([0-9]+)\!([AD])\![^@\-!:>]*->([0-9]+)";
  16.  
  17.             Regex regex = new Regex(decryptingPattern);
  18.             Regex regexForResult = new Regex(pattern);
  19.            
  20.             int countOfMatchedSymbols = int.MinValue;
  21.  
  22.             StringBuilder sb = new StringBuilder();
  23.  
  24.             List<string> destroyedPlanets = new List<string>();
  25.             List<string> attackedPlanets = new List<string>();
  26.  
  27.  
  28.             for (int i = 0; i < numberOfMessages; i++)
  29.             {
  30.                 string encryptedMessage = Console.ReadLine();
  31.                 string decryptedMsg = "";
  32.                 if (regex.IsMatch(encryptedMessage))
  33.                 {
  34.                     countOfMatchedSymbols = Regex.Matches(encryptedMessage, decryptingPattern).Count;
  35.                 }
  36.  
  37.                 var messageCharArr = encryptedMessage.ToCharArray();
  38.                 foreach (var character in messageCharArr)
  39.                 {
  40.                     sb.Append((char)(character - countOfMatchedSymbols));
  41.                     decryptedMsg += sb;
  42.                 }
  43.                 Match match = regexForResult.Match(decryptedMsg);
  44.                 if (match.Success)
  45.                 {
  46.                     if (match.Groups[3].Value =="D")
  47.                     {
  48.                         destroyedPlanets.Add(match.Groups[1].Value);
  49.                     }
  50.                     else if (match.Groups[3].Value == "A")
  51.                     {
  52.                         attackedPlanets.Add(match.Groups[1].Value);
  53.                     }
  54.                 }
  55.                 sb.Clear();
  56.                 decryptedMsg = "";
  57.             }
  58.  
  59.             Console.WriteLine($"Attacked planets: {attackedPlanets.Count}");
  60.             if (attackedPlanets.Count>0)
  61.             {
  62.                 foreach (var planet in attackedPlanets.OrderBy(x => x))
  63.                 {
  64.                     Console.WriteLine("-> "+planet);
  65.                 }
  66.             }
  67.             Console.WriteLine($"Destroyed planets: {destroyedPlanets.Count}");
  68.             if (destroyedPlanets.Count>0)
  69.             {
  70.                 foreach (var planet in destroyedPlanets.OrderBy(x => x))
  71.                 {
  72.                     Console.WriteLine("-> " + planet);
  73.                 }
  74.             }
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement