예제 #1
0
        static string DifficultyMenu(ChallengeDataHelper challenges)
        {
            var domainOptions = new List <string>
            {
                " 1.  Easy (" + challenges.Easy.Count + ")",
                " 2.  Medium (" + challenges.Medium.Count + ")",
                " 3.  Hard (" + challenges.Hard.Count + ")",
            };

            List <string> footerOptions = new List <string> {
                "e", "b", "m"
            };

            string menuChoice;

            do
            {
                menuChoice = DisplayMenu(domainOptions, footerOptions, new string(' ', numberColumnSize) + "Difficulty");
                switch (menuChoice)
                {
                case "1":
                    menuChoice = ChallengesMenu(challenges.Easy).Replace("b", " ");
                    break;

                case "2":
                    menuChoice = ChallengesMenu(challenges.Medium).Replace("b", " ");
                    break;

                case "3":
                    menuChoice = ChallengesMenu(challenges.Hard).Replace("b", " ");
                    break;
                }
            }while (!footerOptions.Contains(menuChoice));
            return(menuChoice);
        }
예제 #2
0
        static string DomainMenu(ChallengeDataHelper challenges)
        {
            var domainOptions = new List <string>
            {
                " 1.  Algorithms (" + challenges.Algorithms.Count + ")",
                " 2.  Data Structures (" + challenges.DataStructures.Count + ")",
                " 3.  Mathematics (" + challenges.Mathematics.Count + ")",
                " 4.  Artificial Intelligence (" + challenges.ArtificialIntelligence.Count + ")",
                " 5.  Functional Programming (" + challenges.FunctionalProgramming.Count + ")",
            };

            List <string> footerOptions = new List <string> {
                "e", "b", "m"
            };

            string menuChoice;

            do
            {
                menuChoice = DisplayMenu(domainOptions, footerOptions, new string(' ', numberColumnSize) + "Domains");
                switch (menuChoice)
                {
                case "1":
                    menuChoice = ChallengesMenu(challenges.Algorithms).Replace("b", " ");
                    break;

                case "2":
                    menuChoice = ChallengesMenu(challenges.DataStructures).Replace("b", " ");
                    break;

                case "3":
                    menuChoice = ChallengesMenu(challenges.Mathematics).Replace("b", " ");
                    break;

                case "4":
                    menuChoice = ChallengesMenu(challenges.ArtificialIntelligence).Replace("b", " ");
                    break;

                case "5":
                    menuChoice = ChallengesMenu(challenges.FunctionalProgramming).Replace("b", " ");
                    break;
                }
            }while (!footerOptions.Contains(menuChoice));
            return(menuChoice);
        }
예제 #3
0
        static void MainMenu(ChallengeDataHelper challenges)
        {
            List <string> mainMenuOptions = new List <string>
            {
                " 1.  List all challenges (" + challenges.AllChallenges.Count + ")",
                " 2.  List challenges by HackerRank domain",
                " 3.  List challenges by difficulty",
                " 4.  Search challenges",
                //" 5.  Keypress search"
            };

            List <string> footerOptions = new List <string> {
                "e"
            };

            string menuChoice;

            do
            {
                menuChoice = DisplayMenu(mainMenuOptions, footerOptions, new string(' ', numberColumnSize) + "Main Menu");
                switch (menuChoice)
                {
                case "1":
                    menuChoice = ChallengesMenu(challenges.AllChallenges);
                    break;

                case "2":
                    menuChoice = DomainMenu(challenges);
                    break;

                case "3":
                    menuChoice = DifficultyMenu(challenges);
                    break;

                case "4":
                    menuChoice = SearchMenu(challenges);
                    break;
                    //case "5":
                    //    menuChoice = KeypressSearchMenu(challenges);
                    //    break;
                }
            }while (!footerOptions.Contains(menuChoice));
        }
예제 #4
0
        static string SearchMenu(ChallengeDataHelper challenges)
        {
            var footerOptions = new List <string> {
                "e", "b", "m"
            };
            string menuChoice;

            do
            {
                string searchString;
                do
                {
                    Console.Clear();

                    //Header
                    PrintHeader(BuildChallengeLine("", "Challenge", "Domain", "Subdomain", "Difficulty"));

                    //Nothing listed at this point
                    for (int i = 0; i < screenSizeY - headerFooterSize; i++)
                    {
                        Console.WriteLine();
                    }

                    //Footer
                    string prompt = " Search for: ";
                    Console.WriteLine(new string('-', screenSizeX));
                    Console.WriteLine();
                    Console.WriteLine(new string('-', screenSizeX));
                    Console.Write(prompt);

                    //Input
                    searchString = Console.ReadLine().ToLower().Trim();
                }while (string.IsNullOrEmpty(searchString));
                menuChoice = ChallengesMenu(challenges.Search(searchString)).Replace("b", "");
            }while (!footerOptions.Contains(menuChoice));
            return(menuChoice);
        }