Advertisement
elena1234

StarEnigma*

Nov 22nd, 2020 (edited)
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.31 KB | None | 0 0
  1. using System;
  2. using System.Text.RegularExpressions;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace text
  7. {
  8.     class MainClass
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.             var regexForKey = new Regex(@"[starSTAR]");
  13.             var regexForDecrypt = new Regex(@"@(?<planet>[A-Za-z]+)[^@\-!:>]*:(?<population>\d+)[^@\-!:>]*!(?<attack>A|D)![^@\-!:>]*->(?<soldierCount>\d+)");
  14.             var listAttackedPlanets = new List<string>();
  15.             var listDestroyedPlanets = new List<string>();
  16.             int linesNumber = int.Parse(Console.ReadLine());
  17.  
  18.             for (int i = 0; i < linesNumber; i++)
  19.             {
  20.                 string message = Console.ReadLine();
  21.                 MatchCollection matches = regexForKey.Matches(message);//need a collection!
  22.                 int key = matches.Count;
  23.                 string decryptedMessage = string.Empty;
  24.                 foreach (char symbol in message)
  25.                 {
  26.                     int decryptedSymbolInt = symbol - key;
  27.                     char decryptedSymbol = (char)decryptedSymbolInt;
  28.                     decryptedMessage += decryptedSymbol;
  29.                 }
  30.  
  31.                 Match newMatch = regexForDecrypt.Match(decryptedMessage);//NB! don't need a collection!
  32.                 if (regexForDecrypt.IsMatch(decryptedMessage))
  33.                 {
  34.                     string planet = newMatch.Groups["planet"].Value;
  35.                     string attack = newMatch.Groups["attack"].Value;
  36.                     if (attack == "A")
  37.                     {
  38.                         listAttackedPlanets.Add(planet);
  39.                     }
  40.  
  41.                     else if (attack == "D")
  42.                     {
  43.                         listDestroyedPlanets.Add(planet);
  44.                     }
  45.                 }
  46.             }
  47.  
  48.             Console.WriteLine($"Attacked planets: {listAttackedPlanets.Count()}");
  49.             foreach (var planet in listAttackedPlanets.OrderBy(x => x))
  50.             {
  51.                 Console.WriteLine($"-> {planet}");
  52.             }
  53.  
  54.             Console.WriteLine($"Destroyed planets: {listDestroyedPlanets.Count()}");
  55.             foreach (var planet in listDestroyedPlanets.OrderBy(x => x))
  56.             {
  57.                 Console.WriteLine($"-> {planet}");
  58.             }
  59.  
  60.         }
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement