static void Main(string[] args) { List <Vlogger> vloggers = new List <Vlogger>(); { while (true) { string data = Console.ReadLine(); if (data == "Statistics") { break; } string[] commands = data.Split(); string command = commands[1]; if (command == "joined") { string name = commands[0]; Vlogger vlogger = new Vlogger(name); if (vloggers.Any(x => x.Name == vlogger.Name) == false) { vloggers.Add(vlogger); } } else { string name1 = commands[0]; string name2 = commands[2]; if (vloggers.Any(x => x.Name == name1) && vloggers.Any(x => x.Name == name2)) { int indexName1 = vloggers.FindIndex(x => x.Name == name1); int indexName2 = vloggers.FindIndex(x => x.Name == name2); if (name1 != name2) { if (vloggers[indexName1].Following.Contains(name2) == false) { vloggers[indexName1].Following.Add(name2); } if (vloggers[indexName2].Followers.Contains(name1) == false) { vloggers[indexName2].Followers.Add(name1); } } } } } int i = 1; Console.WriteLine("The V-Logger has a total of {0} vloggers in its logs.", vloggers.Count); foreach (var item in vloggers.OrderByDescending(x => x.Followers.Count).ThenBy(x => x.Following.Count)) { Console.WriteLine("{0}. {1} : {2} followers, {3} following", i, item.Name, item.Followers.Count, item.Following.Count); if (i == 1) { foreach (var kvp in item.Followers.OrderBy(x => x)) { Console.WriteLine("* {0}", kvp); } } i++; } } }
static void Main(string[] args) { // followed - 3 words // joined - 4 words List <Vlogger> vloggers = new List <Vlogger>(); List <string> vloggersNames = new List <string>(); string[] input = Console.ReadLine() .Split(" ", StringSplitOptions.RemoveEmptyEntries); while (input[0] != "Statistics") { if (input.Length == 4) { string name = input[0]; bool exist = false; Vlogger vlogger = new Vlogger(name); foreach (var curVlogger in vloggers) { if (curVlogger.Name == vlogger.Name) { exist = true; break; } } if (exist == false) { vloggers.Add(vlogger); vloggersNames.Add(vlogger.Name); } } else if (input.Length == 3) { string followingVlogger = input[0]; string followedVlogger = input[2]; if (vloggersNames.Contains(followedVlogger) && vloggersNames.Contains(followingVlogger)) { foreach (var vlogger in vloggers) { if (vlogger.followers.Contains(followingVlogger) == false && vlogger.Name != followingVlogger && vlogger.Name == followedVlogger) { vlogger.followers.Add(followingVlogger); } if (vlogger.following.Contains(followedVlogger) == false && vlogger.Name != followedVlogger && vlogger.Name == followingVlogger) { vlogger.following.Add(followedVlogger); } } } } input = Console.ReadLine() .Split(" ", StringSplitOptions.RemoveEmptyEntries); } Console.WriteLine($"The V-Logger has a total of {vloggers.Count} vloggers in its logs."); Vlogger mostFamous = new Vlogger(" "); foreach (var vlogger in vloggers) { if (vlogger.followers.Count > mostFamous.followers.Count) { vlogger.followers.OrderBy(x => x); mostFamous = vlogger; } } vloggers.Remove(mostFamous); mostFamous.followers.OrderByDescending(x => x); Console.WriteLine($"1. {mostFamous.Name} : {mostFamous.followers.Count} followers," + $" {mostFamous.following.Count} following"); foreach (var follower in mostFamous.followers) { Console.WriteLine($"* {follower}"); } vloggers.OrderByDescending(x => x.followers.Count); for (int i = 0; i < vloggers.Count; i++) { Console.WriteLine($"{i + 1}. {vloggers[i].Name} : {vloggers[i].followers.Count} followers," + $" {vloggers[i].following.Count} following"); } }
static void Main(string[] args) { List <Vlogger> vloggers = new List <Vlogger>(); while (true) { string cmd = Console.ReadLine(); string[] input = cmd.Split(); if (cmd == "Statistics") { break; } string vloggerName = input[0]; string command = input[1]; if (command == "joined") { var current = vloggers.FirstOrDefault(v => v.Name == vloggerName); if (current == null) { var vlogger = new Vlogger(vloggerName); vloggers.Add(vlogger); } } else if (command == "followed") { string secondVlogger = input[2]; if (vloggerName != secondVlogger) { var first = vloggers.FirstOrDefault(v => v.Name == vloggerName); var second = vloggers.FirstOrDefault(v => v.Name == secondVlogger); if (first != null && second != null) { if (!first.Following.Contains(secondVlogger) && !second.Followers.Contains(vloggerName)) { first.Following.Add(secondVlogger); second.Followers.Add(vloggerName); } } } } } var result = vloggers.OrderByDescending(f => f.Followers.Count).ThenBy(f => f.Following.Count).ToList(); Console.WriteLine($"The V-Logger has a total of {result.Count} vloggers in its logs."); for (int i = 0; i < vloggers.Count; i++) { Console.WriteLine($"{i + 1}. {result[i].Name} : {result[i].Followers.Count} followers, {result[i].Following.Count} following"); if (i == 0 && result[i].Followers.Count != 0) { var orderFollowers = result[i].Followers.OrderBy(n => n).ToList(); for (int j = 0; j < orderFollowers.Count; j++) { Console.WriteLine($"* {orderFollowers[j]}"); } } } }
static void Main(string[] args) { HashSet <Vlogger> vloggers = new HashSet <Vlogger>(); var input = Console.ReadLine().Split().ToArray(); while (input[0] != "Statistics") { switch (input[1]) { case "joined": Vlogger newVlogger = new Vlogger(input[0]); if (!vloggers.Any(vloggers => vloggers.Name == newVlogger.Name)) { vloggers.Add(newVlogger); } break; case "followed": var following = input[0]; var followed = input[2]; if (following != followed && vloggers.Any(v => v.Name == following) && vloggers.Any(v => v.Name == followed)) { Vlogger vlogger1 = vloggers.Where(v => v.Name == following).FirstOrDefault(); vlogger1.AddFollowing(followed); Vlogger vlogger2 = vloggers.Where(v => v.Name == followed).FirstOrDefault(); vlogger2.AddFollower(following); } break; } input = Console.ReadLine().Split().ToArray(); } Console.WriteLine($"The V-Logger has a total of {vloggers.Count} vloggers in its logs."); if (vloggers.Count == 0) { return; } int maxFollowers = int.MinValue; foreach (var item in vloggers) { if (item.Followers.Count > maxFollowers) { maxFollowers = item.Followers.Count; } } Vlogger famous = vloggers.Where(v => v.Followers.Count == maxFollowers).FirstOrDefault(); Console.WriteLine($"1. {famous.Name} : {famous.Followers.Count} followers, {famous.Following.Count} following"); foreach (var follower in famous.Followers) { Console.WriteLine($"* {follower}"); } vloggers.Remove(famous); var sorted = vloggers.OrderByDescending(v => v.Followers.Count).ThenBy(v => v.Following.Count); int counter = 2; foreach (var item in sorted) { Console.WriteLine($"{counter}. {item.Name} : {item.Followers.Count} followers, {item.Following.Count} following"); counter++; } }