deleriumbg

Hornet Comm.

Jun 26th, 2018
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.67 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Text.RegularExpressions;
  5.  
  6. namespace Hornet_Comm
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //If the first query consists only of digits and the second one consists of digits and / or letters, it is a private message.
  13.             //If the first query consists of anything but digits, and the second one consists of letters and / or digits, it is a broadcast.
  14.             string privateMessagePattern = @"^([\d]+) <-> ([A-Za-z0-9]+)$";
  15.             string broadcastMessagePattern = @"^([^\d]+) <-> ([A-Za-z0-9]+)$";
  16.  
  17.             List<Tuple<string, string>> messages = new List<Tuple<string, string>>();
  18.             List<Tuple<string, string>> broadcasts = new List<Tuple<string, string>>();
  19.  
  20.             string input = Console.ReadLine();
  21.             while (input != "Hornet is Green")
  22.             {
  23.                 if (!Regex.IsMatch(input, privateMessagePattern) && !Regex.IsMatch(input, broadcastMessagePattern))
  24.                 {
  25.                     input = Console.ReadLine();
  26.                     continue;
  27.                 }
  28.  
  29.                 if (Regex.IsMatch(input, privateMessagePattern))
  30.                 {
  31.                     Match match = Regex.Match(input, privateMessagePattern);
  32.                     string recipientCode = match.Groups[1].Value;
  33.                     recipientCode = Reverse(recipientCode);
  34.                     string message = match.Groups[2].Value;
  35.                     messages.Add(new Tuple<string, string>(recipientCode, message));
  36.                 }
  37.                 else if (Regex.IsMatch(input, broadcastMessagePattern))
  38.                 {
  39.                     Match match = Regex.Match(input, broadcastMessagePattern);
  40.                     string message = match.Groups[1].Value;
  41.                     string frequency = match.Groups[2].Value;
  42.  
  43.                     StringBuilder result = new StringBuilder();
  44.                     foreach (var symbol in frequency)
  45.                     {
  46.                         if (char.IsUpper(symbol))
  47.                         {
  48.                             result.Append(symbol.ToString().ToLower());
  49.                         }
  50.                         else if (char.IsLower(symbol))
  51.                         {
  52.                             result.Append(symbol.ToString().ToUpper());
  53.                         }
  54.                         else
  55.                         {
  56.                             result.Append(symbol.ToString());
  57.                         }
  58.                     }
  59.                     broadcasts.Add(new Tuple<string, string>(result.ToString(), message));
  60.                 }
  61.                 input = Console.ReadLine();
  62.             }
  63.  
  64.             Console.WriteLine("Broadcasts:");
  65.             if (broadcasts.Count > 0)
  66.             {
  67.                 foreach (var pair in broadcasts)
  68.                 {
  69.                     Console.WriteLine($"{pair.Item1} -> {pair.Item2}");
  70.                 }
  71.             }
  72.             else
  73.             {
  74.                 Console.WriteLine("None");
  75.             }
  76.            
  77.             Console.WriteLine("Messages:");
  78.             if (messages.Count > 0)
  79.             {
  80.                 foreach (var pair in messages)
  81.                 {
  82.                     Console.WriteLine($"{pair.Item1} -> {pair.Item2}");
  83.                 }
  84.             }
  85.             else
  86.             {
  87.                 Console.WriteLine("None");
  88.             }
  89.         }
  90.  
  91.         public static string Reverse(string text)
  92.         {
  93.             char[] charArray = text.ToCharArray();
  94.             Array.Reverse(charArray);
  95.             return new string(charArray);
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment