GerganaTsirkova

Forcebook

Apr 4th, 2018
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.45 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _12._Forcebook
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var forcesides = new Dictionary<string, List<string>>();
  12.             string input = Console.ReadLine();
  13.             while (input != "Lumpawaroo")
  14.             {
  15.                 char[] arr = input.ToCharArray();
  16.                 if (arr.Contains('|'))
  17.                 {
  18.                     string[] token = input.Split(new string[] { " | " }, StringSplitOptions.RemoveEmptyEntries).ToArray();
  19.                     string side = token[0];
  20.                     string user = token[1];
  21.                     if(!forcesides.ContainsKey(side))
  22.                     {
  23.                         if(!forcesides.Values.Any(x => x.Contains(user)))
  24.                         {
  25.                             var inner = new List<string>();
  26.                             inner.Add(user);
  27.                             forcesides.Add(side, inner);
  28.                         }
  29.                         else
  30.                         {
  31.                             foreach (var item in forcesides)
  32.                             {
  33.                                 if(item.Value.Contains(user))
  34.                                 {
  35.                                     item.Value.Remove(user);
  36.                                     break;
  37.                                 }
  38.                             }
  39.                             var inner = new List<string>();
  40.                             inner.Add(user);
  41.                             forcesides.Add(side, inner);
  42.                         }
  43.                     }
  44.                     else if(forcesides.ContainsKey(side))
  45.                     {
  46.                         if (!forcesides.Values.Any(x => x.Contains(user)))
  47.                         {
  48.                             forcesides[side].Add(user);
  49.                         }
  50.                         else if(forcesides.Values.Any(x => x.Contains(user)))
  51.                         {
  52.                             foreach (var item in forcesides)
  53.                             {
  54.                                 if (item.Value.Contains(user))
  55.                                 {
  56.                                     item.Value.Remove(user);
  57.                                     break;
  58.                                 }
  59.                             }
  60.                             forcesides[side].Add(user);
  61.                         }
  62.                     }
  63.                 }
  64.                 else if (arr.Contains('>') && (arr.Contains('-')))
  65.                 {
  66.                     string[] token = input.Split(new string[] { " -> " }, StringSplitOptions.RemoveEmptyEntries).ToArray();
  67.                     string user = token[0];
  68.                     string side = token[1];
  69.                     int counter = 0;
  70.                     if(forcesides.ContainsKey(side))
  71.                     {
  72.                         foreach (var item in forcesides)
  73.                         {
  74.                             if (item.Value.Contains(user))
  75.                             {
  76.                                 forcesides[side].Add(user);
  77.                                 forcesides[item.Key].Remove(user);
  78.                                 Console.WriteLine($"{user} joins the {side} side!");
  79.                                 counter++;
  80.                                 break;
  81.                             }
  82.                         }
  83.                         if ((counter == 0) && (forcesides.ContainsKey(side)))
  84.                         {
  85.                             forcesides[side].Add(user);
  86.                             Console.WriteLine($"{user} joins the {side} side!");
  87.                         }
  88.                     }
  89.                     else if(!forcesides.ContainsKey(side))
  90.                     {
  91.                         foreach (var item in forcesides)
  92.                         {
  93.                             if (item.Value.Contains(user))
  94.                             {
  95.                                 var inner = new List<string>();
  96.                                 inner.Add(user);
  97.                                 forcesides[item.Key].Remove(user);
  98.                                 forcesides.Add(side, inner);
  99.                                 Console.WriteLine($"{user} joins the {side} side!");
  100.                                 counter++;
  101.                                 break;
  102.                             }
  103.                         }
  104.                         if (counter == 0)
  105.                         {
  106.                             var inner = new List<string>();
  107.                             inner.Add(user);
  108.                             forcesides.Add(side, inner);
  109.                             Console.WriteLine($"{user} joins the {side} side!");
  110.                         }
  111.                     }
  112.                 }
  113.  
  114.                 input = Console.ReadLine();
  115.             }
  116.             if (forcesides.Count > 0)
  117.             {
  118.                 foreach (var item in forcesides.OrderByDescending(x => x.Value.Count).ThenBy(x => x.Key))
  119.                 {
  120.                     if (item.Value.Count>0)
  121.                     {
  122.                         Console.WriteLine($"Side: {item.Key}, Members: {item.Value.Count}");
  123.                         foreach (var i in item.Value.OrderBy(x => x))
  124.                         {
  125.                             Console.WriteLine($"! {i}");
  126.                         }
  127.                     }
  128.  
  129.                 }
  130.             }
  131.         }
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment