elena1234

ForceBook*

Nov 1st, 2020 (edited)
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.60 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace HouseParty
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var sidesUsersDictionary = new Dictionary<string, List<string>>();
  12.             string input = string.Empty;
  13.             while ((input = Console.ReadLine()) != "Lumpawaroo")
  14.             {
  15.                 if (input.Contains('|'))
  16.                 {
  17.                     string[] inputArray = input.Split(" | ");
  18.                     string side = inputArray[0];
  19.                     string user = inputArray[1];
  20.                     bool userAlreadyExist = false;
  21.                     foreach (var kvp in sidesUsersDictionary)
  22.                     {
  23.                         var currentList = kvp.Value;
  24.                         if (currentList.Contains(user))
  25.                         {
  26.                             userAlreadyExist = true;
  27.                             break;
  28.                         }
  29.                     }
  30.  
  31.                     if (userAlreadyExist == false && sidesUsersDictionary.ContainsKey(side) == false)
  32.                     {
  33.                         sidesUsersDictionary[side] = new List<string>();
  34.                         sidesUsersDictionary[side].Add(user);
  35.                     }
  36.  
  37.                     else if (userAlreadyExist == false && sidesUsersDictionary.ContainsKey(side) == true)
  38.                     {
  39.                         sidesUsersDictionary[side].Add(user);
  40.                     }
  41.                 }
  42.  
  43.                 else if (input.Contains("->"))
  44.                 {
  45.                     string[] inputArray = input.Split(" -> ");
  46.                     string user = inputArray[0];
  47.                     string side = inputArray[1];
  48.                     bool userAlreadyExist = false;
  49.                     string sideWhereIsUser = string.Empty;
  50.                     foreach (var kvp in sidesUsersDictionary)
  51.                     {
  52.                         var currentList = kvp.Value;
  53.                         if (currentList.Contains(user))
  54.                         {
  55.                             userAlreadyExist = true;
  56.                             sideWhereIsUser = kvp.Key;
  57.                             break;
  58.                         }
  59.                     }
  60.  
  61.                     if (userAlreadyExist == false && sidesUsersDictionary.ContainsKey(side) == false)
  62.                     {
  63.                         sidesUsersDictionary[side] = new List<string>();
  64.                         sidesUsersDictionary[side].Add(user);
  65.                         PrintWhereUserJoined(user, side);
  66.                     }
  67.  
  68.                     else if (userAlreadyExist == false && sidesUsersDictionary.ContainsKey(side) == true)
  69.                     {
  70.                         sidesUsersDictionary[side].Add(user);
  71.                         PrintWhereUserJoined(user, side);
  72.                     }
  73.  
  74.                     else if (userAlreadyExist == true && sidesUsersDictionary.ContainsKey(side) == false)
  75.                     {
  76.                         sidesUsersDictionary[sideWhereIsUser].Remove(user);
  77.                         sidesUsersDictionary[side] = new List<string>();
  78.                         sidesUsersDictionary[side].Add(user);
  79.                         PrintWhereUserJoined(user, side);
  80.                     }
  81.  
  82.                     else if (userAlreadyExist==true&& sidesUsersDictionary.ContainsKey(side)==true && sideWhereIsUser!=side)
  83.                     {
  84.                         sidesUsersDictionary[sideWhereIsUser].Remove(user);
  85.                         sidesUsersDictionary[side].Add(user);
  86.                         PrintWhereUserJoined(user, side);
  87.                     }
  88.                 }
  89.             }
  90.  
  91.             PrintAllUsersInAllForceSides(sidesUsersDictionary);
  92.         }
  93.  
  94.  
  95.         private static void PrintAllUsersInAllForceSides(Dictionary<string, List<string>> sidesUsersDictionary)
  96.         {
  97.             foreach (var kvp in sidesUsersDictionary.Where(x => x.Value.Count > 0).OrderByDescending(x => x.Value.Count)
  98.                                                     .ThenBy(x => x.Key))
  99.             {
  100.                 string side = kvp.Key;
  101.                 var listOfUser = kvp.Value;
  102.                 Console.WriteLine($"Side: {side}, Members: {listOfUser.Count()}");
  103.                 foreach (var users in listOfUser.OrderBy(x => x))
  104.                 {
  105.                     Console.WriteLine($"! {users}");
  106.                 }
  107.             }
  108.          }
  109.  
  110.         private static void PrintWhereUserJoined(string user, string side)
  111.         {
  112.             Console.WriteLine($"{user} joins the {side} side!");
  113.         }
  114.     }
  115. }
  116.  
Add Comment
Please, Sign In to add comment