Advertisement
sivancheva

SpyGram

Oct 29th, 2017
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement