static void Main(string[] args) { var vloggers = new List <Vlogger>(); var input = string.Empty; while ((input = Console.ReadLine()) != "Statistics") { var tokens = input.Split(); if (tokens.Length == 4) { var vlogger = new Vlogger(tokens[0]); if (!vloggers.Any(v => v.Name == tokens[0])) { vloggers.Add(vlogger); } } else { var firstVlogger = tokens[0]; var secondVlogger = tokens[2]; if (firstVlogger != secondVlogger && vloggers.Any(v => v.Name == firstVlogger) && vloggers.Any(v => v.Name == secondVlogger)) { vloggers.FirstOrDefault(v => v.Name == secondVlogger).Followers.Add(firstVlogger); vloggers.FirstOrDefault(v => v.Name == firstVlogger).Following.Add(secondVlogger); } } } Console.WriteLine($"The V-Logger has a total of {vloggers.Count} vloggers in its logs."); int position = 1; foreach (var vlogger in vloggers.OrderByDescending(x => x.Followers.Count).ThenBy(x => x.Following.Count)) { Console.WriteLine($"{position}. {vlogger.Name} : {vlogger.Followers.Count} followers, {vlogger.Following.Count} following");; if (position == 1) { foreach (var foll in vlogger.Followers.OrderByDescending(s => s.Length).ThenBy(r => r)) { Console.WriteLine($"* {foll}"); } } position++; } }
static void Main() { List<Vlogger> records = new List<Vlogger>(); string inputCommand = Console.ReadLine(); while (inputCommand != "Statistics") { string[] commandInfo = inputCommand .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .ToArray(); if (commandInfo.Length == 4) { string vloggerName = commandInfo[0]; if (!records.Any(x => x.Name == vloggerName)) { Vlogger user = new Vlogger(vloggerName); records.Add(user); } } else { string followerName = commandInfo[0]; string followingName = commandInfo[2]; var follower = records.FirstOrDefault(x => x.Name == followerName); var following = records.FirstOrDefault(x => x.Name == followingName); if (follower != null && following != null && follower != following) { follower.Following.Add(followingName); following.Followers.Add(followerName); } } inputCommand = Console.ReadLine(); } Console.WriteLine($"The V-Logger has a total of {records.Count} vloggers in its logs."); PrintVloggers(records); }
static void Main(string[] args) { var vloggerFollowing = new Dictionary <string, List <string> >(); var vloggerFollowers = new Dictionary <string, List <string> >(); var input = Console.ReadLine().Split(" "); while (input[0] != "Statistics") { if (input[1] == "joined") { var name = input[0]; if (!vloggerFollowing.ContainsKey(name)) { vloggerFollowing.Add(name, new List <string>()); vloggerFollowers.Add(name, new List <string>()); } } else if (input[1] == "followed") { var currentVlogger = input[0]; var toFollow = input[2]; if (vloggerFollowing.ContainsKey(currentVlogger) && vloggerFollowing.ContainsKey(toFollow) && currentVlogger != toFollow) { if (!vloggerFollowing[currentVlogger].Contains(toFollow)) { vloggerFollowing[currentVlogger].Add(toFollow); vloggerFollowers[toFollow].Add(currentVlogger); } } } input = Console.ReadLine().Split(" "); } vloggerFollowing = vloggerFollowing.OrderBy(x => x.Value.Count()).ThenBy(x => x.Key).ToDictionary(x => x.Key, y => y.Value); vloggerFollowers = vloggerFollowers.OrderByDescending(x => x.Value.Count()).ThenBy(x => x.Key).ToDictionary(x => x.Key, y => y.Value); var vloggers = new List <Vlogger>(); foreach (var(key, value) in vloggerFollowing) { Vlogger current = new Vlogger(); current.name = key; current.following = value.Count(); current.followers = vloggerFollowers[key].Count(); vloggers.Add(current); } vloggers = vloggers.OrderByDescending(x => x.followers).ThenBy(x => x.following).ToList(); Console.WriteLine($"The V-Logger has a total of {vloggers.Count()} vloggers in its logs."); for (int i = 0; i < vloggers.Count(); i++) { Console.WriteLine($"{i+1}. {vloggers[i].name} : {vloggers[i].followers} followers, {vloggers[i].following} following"); if (i == 0) { var maxName = vloggers[0].name; vloggerFollowers[maxName] = vloggerFollowers[maxName].OrderBy(x => x).ToList(); foreach (var item in vloggerFollowers[maxName]) { Console.WriteLine($"* {item}"); } } } }
static void Main(string[] args) { Dictionary <string, Vlogger> vloggers = new Dictionary <string, Vlogger>(); while (true) { string[] command = Console.ReadLine().Split().ToArray(); if (command[0] == "Statistics") { break; } if (command.Length == 4) { string currentName = command[0]; if (vloggers.ContainsKey(currentName)) { continue; } Vlogger currentInput = new Vlogger(currentName); vloggers.Add(currentName, currentInput); } else if (command.Length == 3) { string follow1 = command[0]; string follo2 = command[2]; if (vloggers.ContainsKey(follo2) && vloggers.ContainsKey(follow1) && follow1 != follo2) { foreach (var item in vloggers) { if (item.Key == follow1) { item.Value.Following.Add(follo2); } else if (item.Key == follo2) { item.Value.Followers.Add(follow1); } } } } } Console.WriteLine($"The V-Logger has a total of {vloggers.Count} vloggers in its logs."); int current = 1; foreach (var item in vloggers.OrderByDescending(x => x.Value.Followers.Count).ThenBy(y => y.Value.Following.Count)) { if (current == 1) { Console.WriteLine($"1. {item.Value.Name} : {item.Value.Followers.Count} followers, {item.Value.Following.Count} following"); foreach (var follower in item.Value.Followers.OrderBy(x => x)) { Console.WriteLine($"* {follower}"); } } else { Console.WriteLine($"{current}. {item.Value.Name} : {item.Value.Followers.Count} followers, {item.Value.Following.Count} following"); } current++; } }
static void Main(string[] args) { Dictionary <string, Vlogger> vloggerInfo = new Dictionary <string, Vlogger>(); while (true) { var commands = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); if (commands.Contains("Statistics")) { break; } if (commands.Contains("joined")) { string vloggerName = commands[0]; if (vloggerInfo.ContainsKey(vloggerName)) { continue; } HashSet <string> followers = new HashSet <string>(); HashSet <string> following = new HashSet <string>(); Vlogger vloggerActivity = new Vlogger() { Followers = followers, Following = following }; vloggerInfo.Add(vloggerName, vloggerActivity); } else if (commands.Contains("followed")) { string vloggerName = commands[0]; string cmd = commands[1]; string vloggerToFollow = commands[2]; if (vloggerInfo.ContainsKey(vloggerName) && vloggerInfo.ContainsKey(vloggerToFollow) && vloggerToFollow != vloggerName) { if (!vloggerInfo[vloggerToFollow].Followers.Contains(vloggerName)) { vloggerInfo[vloggerToFollow].Followers.Add(vloggerName); } if (!vloggerInfo[vloggerName].Following.Contains(vloggerToFollow)) { vloggerInfo[vloggerName].Following.Add(vloggerToFollow); } } } } Console.WriteLine($"The V-Logger has a total of {vloggerInfo.Count} vloggers in its logs."); string theVeryBesyVloggerName = string.Empty; int max = int.MinValue; int min = int.MaxValue; foreach (var vlogger in vloggerInfo) { if (vlogger.Value.Followers.Count > max) { max = vlogger.Value.Followers.Count; theVeryBesyVloggerName = vlogger.Key; } if (vlogger.Value.Following.Count < min) { min = vlogger.Value.Following.Count; theVeryBesyVloggerName = vlogger.Key; } } int n = 0; if (vloggerInfo[theVeryBesyVloggerName].Followers.Count > 0) { n++; Console.WriteLine($"1. {theVeryBesyVloggerName} : {vloggerInfo[theVeryBesyVloggerName].Followers.Count} followers," + $" {vloggerInfo[theVeryBesyVloggerName].Following.Count} following"); foreach (var follower in vloggerInfo[theVeryBesyVloggerName].Followers.OrderBy(x => x)) { Console.WriteLine("* " + follower); } vloggerInfo.Remove(theVeryBesyVloggerName); } foreach (var vlogger in vloggerInfo.OrderByDescending(x => x.Value.Followers.Count).ThenBy(x => x.Value.Following.Count)) { n++; Console.WriteLine($"{n}. {vlogger.Key} : {vlogger.Value.Followers.Count} followers, {vlogger.Value.Following.Count} following"); } }
static void Main(string[] args) { Dictionary <string, Vlogger> vloggers = new Dictionary <string, Vlogger>(); string input = Console.ReadLine(); while (input != "Statistics") { string[] newInput = input.Split(" ", StringSplitOptions.RemoveEmptyEntries); if (input.Contains("joined")) { string joiner = newInput[0]; if (!vloggers.ContainsKey(joiner)) { Vlogger newVlogger = new Vlogger(newInput[0], new HashSet <string>(), new HashSet <string>()); vloggers.Add(joiner, newVlogger); } } else { string follower = newInput[0]; string followed = newInput[2]; if (follower != followed) { if (vloggers.ContainsKey(follower) && vloggers.ContainsKey(followed)) { vloggers[followed].followers.Add(follower); vloggers[follower].following.Add(followed); } } } input = Console.ReadLine(); } Console.WriteLine($"The V-Logger has a total of { vloggers.Count} vloggers in its logs."); int maxFollowers = 0; int minFollowing = int.MaxValue; string bestVlogger = ""; foreach (var item in vloggers) { if (item.Value.followers.Count > maxFollowers) { maxFollowers = item.Value.followers.Count; minFollowing = item.Value.following.Count; bestVlogger = item.Key; } else if (item.Value.followers.Count == maxFollowers) { if (minFollowing > item.Value.following.Count) { minFollowing = item.Value.following.Count; bestVlogger = item.Key; } } } Console.WriteLine($"1. {bestVlogger} : { maxFollowers} followers, { minFollowing} following"); vloggers[bestVlogger].followers = vloggers[bestVlogger].followers.OrderBy(x => x).ToHashSet(); foreach (var follower in vloggers[bestVlogger].followers) { Console.WriteLine("* " + follower); } vloggers.Remove(bestVlogger); vloggers = vloggers.OrderByDescending(x => x.Value.followers.Count).ThenBy(x => x.Value.following.Count).ToDictionary(a => a.Key, b => b.Value); int num = 2; foreach (var vlog in vloggers) { Console.WriteLine($"{ num}. { vlog.Key} : { vlog.Value.followers.Count} followers, { vlog.Value.following.Count} following"); num++; } }