tsekotsolov

HornetComm

Dec 2nd, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Text.RegularExpressions;
  7.  
  8. namespace HornetComm
  9. {
  10.     class HornetComm
  11.     {
  12.         static void Main()
  13.         {
  14.             var input = Console.ReadLine();
  15.  
  16.            
  17.  
  18.             var recepientCode = new List<string>();
  19.             var recepientMessage = new List<string>();
  20.  
  21.             var broadcastFrequency = new List<string>();
  22.             var broadcastMessage = new List<string>();
  23.  
  24.             while (input != "Hornet is Green")
  25.             {
  26.                 string firstQuery, secondQuery;
  27.                
  28.  
  29.                 var privatemessagePattern = @"(^[0-9\n]+)\s<->\s([0-9A-Za-z]+)$";
  30.                 var broadcastPattern = @"(^[^0-9\n]+)\s<->\s([0-9A-Za-z]+)$";
  31.  
  32.                 if (Regex.IsMatch(input, privatemessagePattern))
  33.                 {
  34.                     SplitQueries(input, out firstQuery, out secondQuery);
  35.                     var code = Reverse(firstQuery);
  36.  
  37.                     recepientCode.Add(code);
  38.                     recepientMessage.Add(secondQuery);
  39.                 }
  40.                 else if (Regex.IsMatch(input, broadcastPattern))
  41.                 {
  42.                     SplitQueries(input, out firstQuery, out secondQuery);
  43.                     StringBuilder bag = TransformLetters(secondQuery);
  44.  
  45.                     broadcastFrequency.Add(bag.ToString());
  46.                     broadcastMessage.Add(firstQuery);
  47.                 }
  48.  
  49.                 input = Console.ReadLine();
  50.             }
  51.  
  52.  
  53.             Console.WriteLine("Broadcasts:");
  54.             PrintResult(broadcastFrequency,broadcastMessage);
  55.  
  56.  
  57.             Console.WriteLine("Messages:");
  58.             PrintResult(recepientCode, recepientMessage);
  59.         }
  60.  
  61.         private static void SplitQueries(string input, out string firstQuery, out string secondQuery)
  62.         {
  63.             firstQuery = input.Split(new string[] { " <-> " }, StringSplitOptions.None).First();
  64.             secondQuery = input.Split(new string[] { " <-> " }, StringSplitOptions.None).Skip(1).First();
  65.         }
  66.  
  67.         private static StringBuilder TransformLetters(string secondQuery)
  68.         {
  69.             var bag = new StringBuilder();
  70.  
  71.             foreach (var symbol in secondQuery)
  72.             {
  73.                 if (Char.IsUpper(symbol))
  74.                 {
  75.                     bag.Append(symbol.ToString().ToLower());
  76.                 }
  77.                 else if (Char.IsLower(symbol))
  78.                 {
  79.                     bag.Append(symbol.ToString().ToUpper());
  80.                 }
  81.                 else
  82.                 {
  83.                     bag.Append(symbol);
  84.                 }
  85.             }
  86.  
  87.             return bag;
  88.         }
  89.  
  90.         public static string Reverse(string text)
  91.         {
  92.             char[] cArray = text.ToCharArray();
  93.             string reverse = String.Empty;
  94.             for (int i = cArray.Length - 1; i > -1; i--)
  95.             {
  96.                 reverse += cArray[i];
  97.             }
  98.             return reverse;
  99.         }
  100.  
  101.         private static void PrintResult(List<string> firstListToPrint, List<string> secondListToPrint)
  102.         {
  103.  
  104.  
  105.             if (firstListToPrint.Count != 0)
  106.             {
  107.  
  108.                 for (int i = 0; i < firstListToPrint.Count; i++)
  109.                 {
  110.                     Console.WriteLine($"{firstListToPrint[i]} -> {secondListToPrint[i]}");
  111.                 }
  112.             }
  113.             else
  114.             {
  115.                 Console.WriteLine("None");
  116.             }
  117.         }
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment