Advertisement
Niicksana

04. ForceBook

Jun 24th, 2018
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _04._ForceBook
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. // Programming Fundamentals Exam - 04 March 2018 Part II
  12.  
  13. string input = Console.ReadLine();
  14.  
  15. Dictionary<string, List<string>> forceBook = new Dictionary<string, List<string>>();
  16. while (input != "Lumpawaroo")
  17. {
  18. string pattern = " | ";
  19. string patternn = " -> ";
  20. string[] force = input.Split(new[] { pattern, patternn }, StringSplitOptions.None).ToArray();
  21.  
  22. string first = force[0];
  23. string second = force[1];
  24.  
  25. List<string> forceUser = new List<string>();
  26.  
  27. if (input.Contains("|"))
  28. {
  29. if (!forceBook.ContainsKey(first))
  30. {
  31. forceBook.Add(first, new List<string>());
  32. }
  33.  
  34. else
  35. {
  36. forceBook[first].Add(second);
  37. }
  38.  
  39. if (!forceBook[first].Contains(second))
  40. {
  41. forceBook[first].Add(second);
  42. }
  43. }
  44. else if (input.Contains("->"))
  45. {
  46. if (!forceBook.ContainsKey(second))
  47. {
  48. forceBook.Add(second, new List<string>());
  49. }
  50.  
  51. if (forceBook.ContainsKey(second))
  52. {
  53. foreach (var side in forceBook.Values)
  54. {
  55. if (side.Contains(first))
  56. {
  57. side.Remove(first);
  58. }
  59. }
  60.  
  61. if (!forceBook[second].Contains(first))
  62. {
  63. forceBook[second].Add(first);
  64. Console.WriteLine($"{first} joins the {second} side!");
  65. }
  66. }
  67. }
  68.  
  69. input = Console.ReadLine();
  70. }
  71.  
  72. foreach (var side in forceBook.OrderByDescending(side => side.Value.Count).ThenBy(name => name.Key))
  73. {
  74. if (side.Value.Count != 0)
  75. {
  76. Console.WriteLine($"Side: {side.Key}, Members: {side.Value.Count}");
  77. foreach (var forceUser in side.Value.OrderBy(user => user))
  78. {
  79. Console.WriteLine($"! {forceUser}");
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement