yanchevilian

07. *The V-Logger/ C# Advanced/ Dictionary

Jul 27th, 2021 (edited)
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.28 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Problem_7.__The_V_Logger
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             //------------- READING INPUT-----------------//
  12.  
  13.             string[] inputInf = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
  14.             Dictionary<string, List<string>> joinedPersons = new Dictionary<string, List<string>>();
  15.             Dictionary<string, int[]> followedAndFollowers = new Dictionary<string, int[]>();
  16.  
  17.  
  18.             while (inputInf[0]?.ToLower() != "statistics")
  19.             {
  20.                 string name = inputInf[0];
  21.                 string command = inputInf[1];
  22.                 switch (command.ToLower())
  23.                 {
  24.                     case "joined":
  25.                         if (joinedPersons.ContainsKey(name) == false)
  26.                         {
  27.                             joinedPersons[name] = new List<string>();
  28.                             followedAndFollowers[name] = new int[2];
  29.                         }
  30.                         break;
  31.                     case "followed":
  32.                         string followerVlogger = name;
  33.                         string followedVlogger = inputInf[2];
  34.  
  35.                         if (joinedPersons.ContainsKey(followerVlogger) && joinedPersons.ContainsKey(followedVlogger))
  36.                         {
  37.                             if (joinedPersons[followedVlogger].Contains(followerVlogger) == false && followedVlogger != followerVlogger)
  38.                             {
  39.                                 joinedPersons[followedVlogger].Add(followerVlogger);
  40.                                 followedAndFollowers[followedVlogger][0]++;
  41.                                 followedAndFollowers[name][1]++;
  42.                             }
  43.                         }
  44.                         break;
  45.                 }
  46.                 inputInf = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
  47.             }
  48.  
  49.             Console.WriteLine($"The V-Logger has a total of {joinedPersons.Count} vloggers in its logs.");
  50.  
  51.             var orderedPeople = followedAndFollowers.OrderByDescending(x => x.Value[0]).ThenBy(x => x.Value[1])
  52.                 .ToDictionary(x => x.Key, x => x.Value);
  53.  
  54.             int count = 1;
  55.             string userToRemove = "";
  56.             foreach (KeyValuePair<string, int[]> kvp in orderedPeople)
  57.             {
  58.                 userToRemove = kvp.Key;
  59.  
  60.                 Console.WriteLine($"{count}. {kvp.Key} : {orderedPeople[kvp.Key][0]} followers, {orderedPeople[kvp.Key][1]} following");
  61.                 count++;
  62.                 if (joinedPersons[kvp.Key].Count > 0)
  63.                 {
  64.                     foreach (string follower in joinedPersons[kvp.Key].OrderBy(x => x))
  65.                     {
  66.                         Console.WriteLine($"*  {follower}");
  67.                     }
  68.                 }
  69.                 break;
  70.             }
  71.  
  72.             orderedPeople.Remove(userToRemove);
  73.             foreach (KeyValuePair<string, int[]> kvp in orderedPeople)
  74.             {
  75.                 Console.WriteLine($"{count}. {kvp.Key} : {orderedPeople[kvp.Key][0]} followers, {orderedPeople[kvp.Key][1]} following");
  76.                 count++;
  77.             }
  78.         }
  79.     }
  80. }
  81.  
Add Comment
Please, Sign In to add comment