Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.96 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4. using System.Text.RegularExpressions;
  5.  
  6. namespace Star_Enigma
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int n = int.Parse(Console.ReadLine());
  13.  
  14.             string pattern = @"@(?<planet>[A-Za-z]+)([^@\-!:>]*):(?<population>[\d]+)([^@\-!:>]*)!(?<attack>[AD])!([^@\-!:>]*)->(?<soldier>[0-9]+)";
  15.  
  16.             var regex = new Regex(pattern);
  17.  
  18.             List<char> decryptedMessage = new List<char>();
  19.             var attackedPlanets = new List<string>();
  20.             var destroyedPlanets = new List<string>();
  21.  
  22.             int count = 0;
  23.             int counterAttacked = 0;
  24.             int counterDestroyed = 0;
  25.  
  26.             for (int i = 0; i < n; i++)
  27.             {
  28.                 string encryptedMessage = Console.ReadLine();
  29.  
  30.                 for (int j = 0; j < encryptedMessage.Length; j++)
  31.                 {
  32.                     char symbol = encryptedMessage[j];
  33.  
  34.                     if (symbol == 's' || symbol == 't' || symbol == 'a' || symbol == 'r' || symbol == 'S' || symbol == 'T' || symbol == 'A' || symbol == 'R')
  35.                     {
  36.                         count++;
  37.                     }
  38.                 }
  39.  
  40.                 for (int j = 0; j < encryptedMessage.Length; j++)
  41.                 {
  42.                     int decrypt = encryptedMessage[j] - count;
  43.                     char decryptedSymbol = Convert.ToChar(decrypt);
  44.                     decryptedMessage.Add(decryptedSymbol);
  45.                 }
  46.  
  47.                 string decrypted = string.Join("", decryptedMessage);
  48.  
  49.                 var matches = regex.Matches(decrypted);
  50.  
  51.                 foreach (Match match in matches)
  52.                 {
  53.                     var planet = match.Groups["planet"].Value;
  54.                     var population = match.Groups["population"].Value;
  55.                     var attack = match.Groups["attack"].Value;
  56.                     var soldier = match.Groups["soldier"].Value;
  57.  
  58.                     if (attack == 'A'.ToString())
  59.                     {
  60.                         counterAttacked += 1;
  61.  
  62.                         attackedPlanets.Add(planet);
  63.                     }
  64.                     else if (attack == 'D'.ToString())
  65.                     {
  66.                         counterDestroyed += 1;
  67.  
  68.                         destroyedPlanets.Add(planet);
  69.                     }
  70.                 }
  71.  
  72.                 count = 0;
  73.                 decryptedMessage.Clear();
  74.             }
  75.  
  76.             Console.WriteLine($"Attacked planets: {counterAttacked}");
  77.  
  78.             foreach (var item in attackedPlanets.OrderBy(x => x))
  79.             {
  80.                 Console.WriteLine($"-> {item}");
  81.             }
  82.  
  83.             Console.WriteLine($"Destroyed planets: {counterDestroyed}");
  84.  
  85.             foreach (var item in destroyedPlanets.OrderBy(x => x))
  86.             {
  87.                 Console.WriteLine($"-> {item}");
  88.             }
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement