Danny_Berova

02.SpyGram

Aug 14th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.03 KB | None | 0 0
  1.  
  2. namespace _02.SpyGram
  3. {
  4.     using System;
  5.     using System.Collections.Generic;
  6.     using System.Linq;
  7.     using System.Text.RegularExpressions;
  8.  
  9.     public class Program
  10.     {
  11.         public static void Main()
  12.         {
  13.             Dictionary<string, List<string>> pendingMessages = new Dictionary<string, List<string>>();
  14.             string messagePattern = @"^TO: ([A-Z]+); MESSAGE: (.+);$";
  15.             Regex regex = new Regex(messagePattern, RegexOptions.Multiline);
  16.  
  17.  
  18.             string privateKey = Console.ReadLine();
  19.             string inputMessage = Console.ReadLine();
  20.  
  21.             while (inputMessage != "END")
  22.             {
  23.                 var validMessage = Regex.Match(inputMessage, messagePattern);
  24.                 string matchMessage = validMessage.Value.ToString();
  25.                 string name = validMessage.Groups[1].ToString();
  26.                 string message = validMessage.Groups[2].ToString();
  27.                 string encrypted = string.Empty;
  28.                 int key = 0;
  29.  
  30.                 for (int i = 0; i < matchMessage.Length; i++)
  31.                 {
  32.                     if (key >= privateKey.Length)
  33.                     {
  34.                         key = 0;
  35.                     }
  36.                     encrypted += (char)(matchMessage.ToString()[i] + ((int)privateKey[key] - 48));
  37.  
  38.                     key++;
  39.                 }
  40.  
  41.                 if (name != "" || encrypted != "")
  42.                 {
  43.                     if (!pendingMessages.ContainsKey(name))
  44.                     {
  45.                         pendingMessages.Add(name, new List<string>());
  46.                     }
  47.  
  48.                     pendingMessages[name].Add(encrypted);
  49.                }
  50.  
  51.  
  52.                 inputMessage = Console.ReadLine();
  53.             }
  54.  
  55.             foreach (var senderMessages in pendingMessages.OrderBy(m => m.Key))
  56.             {
  57.                 foreach (var message in senderMessages.Value)
  58.                 {
  59.                     Console.WriteLine(message);
  60.                 }
  61.             }
  62.         }
  63.     }
  64. }
Add Comment
Please, Sign In to add comment