krasizorbov

Star Enigma

Mar 19th, 2019
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.63 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 Star_Enigma
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int num = int.Parse(Console.ReadLine());
  14.             int sum = 0;
  15.  
  16.             var attackedPlanets = new List<string>();
  17.  
  18.             var destroyedPlanets = new List<string>();
  19.  
  20.             for (int i = 0; i < num; i++)
  21.             {
  22.                 string input = Console.ReadLine();
  23.  
  24.                 StringBuilder sb = new StringBuilder(input);
  25.  
  26.                 for (int j = 0; j < sb.Length; j++)
  27.                 {
  28.                     if (sb[j] == 's' || sb[j] == 't' || sb[j] == 'a' || sb[j] == 'r'
  29.                         || sb[j] == 'S' || sb[j] == 'T' || sb[j] == 'A' || sb[j] == 'R')
  30.                     {
  31.                         sum++;
  32.                     }
  33.                 }
  34.  
  35.                 for (int j = 0; j < sb.Length; j++)
  36.                 {
  37.                     sb[j] = (char)(sb[j] - sum);
  38.                 }
  39.  
  40.                 string output = sb.ToString();
  41.  
  42.                 sum = 0;
  43.  
  44.                 string pattern = @"@(?<name>[A-Za-z]+)([^@:!\->]*):(?<population>[0-9]+)([^@:!\->]*)!(?<type>(A|D))!([^@:!\->]*)->(?<count>[0-9]+)";
  45.  
  46.                 var match = Regex.Match(output, pattern);
  47.                 if (match.Success)
  48.                 {
  49.                     string name = match.Groups["name"].Value;
  50.                     //int population = int.Parse(match.Groups["population"].Value); //not used in the output
  51.                     var type = match.Groups["type"].Value;
  52.                     //int count = int.Parse(match.Groups["count"].Value); //not used in the output
  53.                     if (type == "A")
  54.                     {
  55.                         attackedPlanets.Add(name);
  56.                     }
  57.                     else
  58.                     {
  59.                         destroyedPlanets.Add(name);
  60.                     }
  61.                 }
  62.             }//for loop ends here
  63.  
  64.             int sumAttacked = attackedPlanets.Count;
  65.             int sumDestroyed = destroyedPlanets.Count;
  66.  
  67.             Console.WriteLine($"Attacked planets: {attackedPlanets.Count}");
  68.             foreach (var planet in attackedPlanets.OrderBy(x => x))
  69.             {
  70.                 Console.WriteLine($"-> {planet}");
  71.             }
  72.  
  73.             Console.WriteLine($"Destroyed planets: {destroyedPlanets.Count}");
  74.             foreach (var planet in destroyedPlanets.OrderBy(x => x))
  75.             {
  76.                 Console.WriteLine($"-> {planet}");
  77.             }
  78.         }
  79.     }
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment