コード例 #1
0
 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++;
         }
     }
 }
コード例 #2
0
        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");
            }
        }
コード例 #3
0
        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]}");
                    }
                }
            }
        }
コード例 #4
0
        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++;
            }
        }