Beispiel #1
0
    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);
        }
Beispiel #3
0
        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}");
                    }
                }
            }
        }
Beispiel #4
0
        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");
            }
        }
Beispiel #6
0
        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++;
            }
        }