SHARE
TWEET

SpyGram

sivancheva Oct 29th, 2017 75 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.                 int index = (matchedMessage.Length / key.Length) +1;
  32.                 var keyCurrent = string.Concat(Enumerable.Repeat(key, index))
  33.                                             .ToCharArray().Select(x => x - 48).ToArray();
  34.  
  35.                 StringBuilder result = new StringBuilder();
  36.                                
  37.                 for (int i = 0; i < input.Length ; i++)
  38.                 {
  39.                     var a = (int)input[i] + (keyCurrent[i]);
  40.                                        
  41.                     char character = (char)a;
  42.                     string text = character.ToString();
  43.  
  44.                     result.Append(text);
  45.                 }
  46.  
  47.                 if (!senderMessageDict.ContainsKey(sender))
  48.                 {
  49.                     senderMessageDict.Add(sender, new List<string>());
  50.                     senderMessageDict[sender].Add(result.ToString());
  51.                 }
  52.                 else if (!senderMessageDict[sender].Contains(result.ToString()))
  53.                 {
  54.                     senderMessageDict[sender].Add(result.ToString());
  55.                 }
  56.                              
  57.                 input = Console.ReadLine();
  58.             }
  59.  
  60.             foreach (var sender in senderMessageDict.OrderBy(a => a.Key))
  61.             {
  62.                 foreach (var a in sender.Value)
  63.                 {
  64.                     Console.WriteLine($"{a}");
  65.                 }
  66.                
  67.             }
  68.         }
  69.     }
  70. }
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
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top