SHARE
TWEET

SpyGram2

sivancheva Oct 29th, 2017 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7.  
  8. namespace _02_SpyGram
  9. {
  10.     class SpyGram
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             var key = Console.ReadLine();
  15.             var input = Console.ReadLine();
  16.  
  17.             var senderMessageDict = new Dictionary<string, List<string>>();
  18.             var pattern = new Regex(@"^TO:\s{1}(?<sender>[A-Z]+);\s{1}MESSAGE:\s{1}(.*);$");
  19.            
  20.  
  21.             while (input != "END")
  22.             {                              
  23.                 var matchedMessage = pattern.Match(input);
  24.  
  25.                 if (!matchedMessage.Success)
  26.                 {
  27.                     input = Console.ReadLine();
  28.                     continue;
  29.                 }
  30.                 string sender = matchedMessage.Groups["sender"].Value;
  31.  
  32.                 int index = (matchedMessage.Length / key.Length) +1;
  33.                 var keyCurrent = string.Concat(Enumerable.Repeat(key, index))
  34.                                             .ToCharArray().Select(x => x - 48).ToArray();
  35.  
  36.                 StringBuilder result = new StringBuilder();
  37.                                
  38.                 for (int i = 0; i < input.Length ; i++)
  39.                 {
  40.                     var a = (int)input[i] + (keyCurrent[i]);
  41.                                        
  42.                     char character = (char)a;
  43.                     string text = character.ToString();
  44.  
  45.                     result.Append(text);
  46.                 }
  47.  
  48.                 if (!senderMessageDict.ContainsKey(sender))
  49.                 {
  50.                     senderMessageDict.Add(sender, new List<string>());
  51.                     senderMessageDict[sender].Add(result.ToString());
  52.                 }
  53.                 else
  54.                 {
  55.                     senderMessageDict[sender].Add(result.ToString());
  56.                 }
  57.                    
  58.                 input = Console.ReadLine();
  59.             }
  60.  
  61.             foreach (var sender in senderMessageDict.OrderBy(a => a.Key))
  62.             {
  63.                 foreach (var a in sender.Value)
  64.                 {
  65.                     Console.WriteLine($"{a}");
  66.                 }
  67.                
  68.             }
  69.         }
  70.     }
  71. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top