public Dictionary <string, List <string> > GetAnagrams(string filePath)
        {
            List <string> words = ReadFile(filePath);

            Anagram.Anagram anagram = new Anagram.Anagram();
            return(anagram.ComputeAnagrams(words));
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            string  possibleAnagram1 = Console.ReadLine();
            string  possibleAnagram2 = Console.ReadLine();
            Anagram anagram          = new Anagram(possibleAnagram1, possibleAnagram2);

            Console.WriteLine(anagram.Check());
        }
Beispiel #3
0
        //private const string inputFile = "WordListAllEnglishWords.txt";

        static void Main(string[] args)
        {
            Console.WriteLine("*** Tests Started {0} ***\n\n", DateTime.Now);

            var anagram = new Anagram();
            var testsToRun = testDataList;                                  // All Tests
            //var testsToRun = testDataList.Where(x => x.TestNumber == 1);    // Specific Test
            //var testsToRun = testDataList.Where(x => x.ExpectedResult);     // Positive Tests
            //var testsToRun = testDataList.Where(x => !x.ExpectedResult);    // Negative Tests

            foreach (var testData in testsToRun)
            {
                Console.WriteLine("{0}\tSTARTING TEST {1}\n", DateTime.Now, testData.TestNumber);

                anagram.FindSecretPhrase(testData.HintPhrase, testData.MD5HashKey, testData.InputFile);
                anagram.PrintFullStats();

                testData.ReturnedResult = anagram.SecretPhraseFound;
                testData.ReturnedSecretPhrase = anagram.SecretPhrase;
                testData.TotalTime = anagram.TotalTime;
                testData.WordsFiltered = anagram.WordsFiltered;
                testData.NodesAdded = anagram.NumNodes;
            }

            if (!testsToRun.Any(x => !x.TestPassed))
            {
                Console.WriteLine("ALL TESTS PASSED\n");
            }

            var headerRow = new string[] { "Test #", "Result", "Total Time", "Words Filtered", "Nodes Added" };

            TablePrinter.PrintLine();
            TablePrinter.PrintRow(headerRow);
            TablePrinter.PrintLine();

            foreach (var testData in testsToRun)
            {
                TablePrinter.PrintRow(new string[]
                {
                    testData.TestNumber.ToString(),
                    testData.TestPassed ? " Passed " : "*Failed*",
                    testData.TotalTime.ToString(),
                    testData.WordsFiltered.ToString(),
                    testData.NodesAdded.ToString()
                });
            }

            TablePrinter.PrintLine();

            var doubleAverageTicks = testsToRun.Average(timeSpan => timeSpan.TotalTime.Ticks);
            var longAverageTicks = Convert.ToInt64(doubleAverageTicks);
            var averageTime = new TimeSpan(longAverageTicks);

            Console.WriteLine(string.Format("\nAverage Time = {0}", averageTime));

            Console.WriteLine("\n\n*** Tests Ended {0} ***\n", DateTime.Now);
            Console.ReadLine();
        }
Beispiel #4
0
        public void anagram_true()
        {
            List <string> testWords = new List <string> {
                "llohe", "Cherio", "heoll"
            };

            //"llohe","Cherio", "heoll"
            Anagram test = new Anagram("hello", testWords);

            Assert.Equal("heoll", test.GetAnagram()[1]);
        }
Beispiel #5
0
        public static void Main()
        {
            Anagram myAnagram = new Anagram();

            Console.WriteLine("Input an initial word.");
            string inputWord = Console.ReadLine();

            Console.WriteLine("Input a list of possible anagram words");
            string wordList = Console.ReadLine();
            string result   = myAnagram.Comparision(wordList, inputWord);

            Console.WriteLine(anagramWord);
        }
Beispiel #6
0
 public HomeModule()
 {
     Get["/"] = _ => {
         return(View["index.cshtml"]);
     };
     Get["/anagram"] = _ => {
         List <string> newList = new List <string> {
             Request.Query["word1"], Request.Query["word2"], Request.Query["word3"], Request.Query["word4"], Request.Query["word5"]
         };
         Anagram newAnagram = new Anagram(
             Request.Query["anagram"], newList);
         List <string> newList2 = newAnagram.GetAnagram();
         return(View["anagram.cshtml", newList2]);
     };
 }
Beispiel #7
0
        public void IsAnagramMultipleWords_ReturnAnagramsWithoutDuplicates_true()
        {
            Anagram test = new Anagram()
            {
            };
            List <string> testList = new List <string>()
            {
                "bread", "beard", "rock", "pig"
            };
            List <string> expectedResults = new List <string>()
            {
                "bread", "beard"
            };

            Assert.Equal(expectedResults, test.IsAnagramMultipleWords(testList));
        }
Beispiel #8
0
        public HomeModule()
        {
            Get["/"] = _ =>
            {
                return(View["index.cshtml"]);
            };

            Post["/anagram_generated"] = _ =>
            {
                List <string> inputWords = new List <string>()
                {
                    Request.Form["anagram1"], Request.Form["anagram2"], Request.Form["anagram3"], Request.Form["anagram4"], Request.Form["anagram5"],
                };
                Anagram newAnagram = new Anagram()
                {
                };
                List <string> results = new List <string>()
                {
                };
                results = newAnagram.IsAnagramMultipleWords(inputWords);
                return(View["anagram_generated.cshtml", results]);
            };

            Post["/partial_anagram_generated"] = _ =>
            {
                string  results;
                Anagram newAnagram = new Anagram()
                {
                };
                if (newAnagram.IsAnagramPartial(Request.Form["partial1"], Request.Form["partial2"]))
                {
                    results = "true";
                }
                else
                {
                    results = "false";
                }
                return(View["/partial_anagram_generated.cshtml", results]);
            };
        }
Beispiel #9
0
        public List <string> IsAnagramMultipleWords(List <string> words)
        {
            List <string> results = new List <string>()
            {
            };

            for (int i = 0; i < words.Count; i++)
            {
                for (int j = 0; j < words.Count; j++)
                {
                    if (i != j)
                    {
                        Anagram testObject = new Anagram()
                        {
                        };
                        if (testObject.IsAnagram(words[i], words[j]))
                        {
                            results.Add(words[i]);
                            results.Add(words[j]);
                        }
                    }
                }
            }

            for (int i = 0; i < results.Count; i++)
            {
                for (int j = 0; j < results.Count; j++)
                {
                    if (i != j)
                    {
                        if (results[i] == results[j])
                        {
                            results.RemoveAt(j);
                        }
                    }
                }
            }
            return(results);
        }
Beispiel #10
0
        static void Main(string[] args)
        {
            string firstString, secondString;

            //Gets words from user.
            Console.WriteLine("Enter first string");
            firstString = Console.ReadLine();
            Console.WriteLine("Enter second string");
            secondString = Console.ReadLine();
            Anagram anagram = new Anagram();

            //Check if words are anagram
            if (anagram.areAnagram(firstString, secondString) == true)
            {
                Console.WriteLine("Both string are anagram string.");
            }
            else
            {
                Console.WriteLine("Both string are not anagram string.");
            }
            Console.ReadLine();
        }
Beispiel #11
0
        public static void Main()
        {
            bool isDone = true;

            Console.WriteLine("Please enter your Word to check for anagram");
            string firstWord = Console.ReadLine();

            while (isDone == true)
            {
                Console.WriteLine("Would you like to add a new word or compare to anagram word? (add/compare)");
                string userInput = Console.ReadLine();
                if (userInput == "add")
                {
                    Console.WriteLine("Please enter your item ");
                    string  newWord1   = Console.ReadLine();
                    Anagram newAnagram = new Anagram(newWord1);
                    newAnagram.Save();
                }
                else if (userInput == "compare")
                {
                    isDone = false;
                }
            }
            List <Anagram> instances = Anagram.GetList();

            Console.WriteLine("These words are anagrams of " + firstWord);
            foreach (Anagram word in instances)
            {
                // Anagram newAnagram1 = new Anagram ("something");
                string wordX = Anagram.anagramWordSort(firstWord);
                string wordY = Anagram.anagramWordSort(word.GetCompareWord());
                if (Anagram.CompareTwoWords(wordX, wordY))
                {
                    Console.WriteLine(word.GetCompareWord());
                }
            }
        }
Beispiel #12
0
        public static void Main()
        {
            List <string> testList = new List <string> {
            };
            Anagram newAnagram     = new Anagram("", testList);

            Console.WriteLine("Enter a word.");
            string wordToCheck = Console.ReadLine();

            Console.WriteLine("Now enter any words (seperated with spaces) you think may be anagrams of your first word.");
            string wordList = Console.ReadLine();

            testList = wordList.Split(' ').ToList();
            newAnagram.SetWord(wordToCheck);
            newAnagram.SetWordList(testList);
            List <string> resultList = newAnagram.CheckWordList();

            System.Console.WriteLine("Anagrams for the word " + wordToCheck + " include: ");

            foreach (string word in resultList)
            {
                System.Console.WriteLine(word);
            }
        }
Beispiel #13
0
 public void AnagramTest_MultipleAreAnagramsTrue()
 {
     var testAnagram = new Anagram();
       Assert.Equal(true, testAnagram.IsAnagram("read", "dare dear"));
 }
Beispiel #14
0
 public void AnagramTest_StringIsAnagramTrue()
 {
     var testAnagram = new Anagram();
       Assert.Equal(true, testAnagram.IsAnagram("read", "dear"));
 }
Beispiel #15
0
 public void AnagramTest_StringsMatchFalse()
 {
     var testAnagram = new Anagram();
       Assert.Equal(false, testAnagram.IsAnagram("n", "a"));
 }
        public void Test1(string str1, string str2)
        {
            Anagram anagram = new Anagram();

            Assert.True(anagram.TestAnagram(str1, str2));
        }
Beispiel #17
0
 public void AnagramTest_StringsMatchTrue()
 {
     var testAnagram = new Anagram();
       Assert.Equal(true, testAnagram.IsAnagram("n", "n"));
 }
Beispiel #18
0
 public void AnagramTest_MultipleAreAnagramsFalse()
 {
     var testAnagram = new Anagram();
       Assert.Equal(false, testAnagram.IsAnagram("read", "zare zear"));
 }
Beispiel #19
0
 public void AnagramTest_StringIsAnagramFalse()
 {
     var testAnagram = new Anagram();
       Assert.Equal(false, testAnagram.IsAnagram("read", "reed"));
 }
Beispiel #20
0
        public void AddNodes(Anagram anagram)
        {
            var queue = new Queue<Node>();
            var stringBuilder = new StringBuilder(anagram.HintPhrase.Length);

            queue.Enqueue(new Node(null, null, 0));   // add root node
            anagram.NumNodes++;

            while (queue.Count > 0)
            {
                var currentNode = queue.Dequeue();
                var currentPhrase = currentNode.GetFullPhrase();
                var newWordNumber = currentNode.WordNumber + 1;

                stringBuilder.Clear().Append(currentPhrase);
                var endIndexOfCurrentPhrase = stringBuilder.Length;

                foreach (var keyWordListPair in anagram.WordHash)
                {
                    if (!string.IsNullOrEmpty(currentPhrase))
                    {
                        stringBuilder.Append(" ");
                    }

                    stringBuilder.Append(keyWordListPair.Key);
                    var lengthToRemove = stringBuilder.Length - endIndexOfCurrentPhrase;

                    if (anagram.IsPhraseValid(stringBuilder.ToString(), newWordNumber))
                    {
                        // loop through each word that matches the key
                        foreach (var newWord in keyWordListPair.Value)
                        {
                            if (newWordNumber == anagram.NumWords)
                            {
                                stringBuilder.Remove(endIndexOfCurrentPhrase, lengthToRemove);

                                if (stringBuilder.Length > 0)
                                {
                                    stringBuilder.Append(" ");
                                }

                                stringBuilder.Append(newWord);

                                anagram.VerifyMd5Hash(stringBuilder.ToString());

                                if (anagram.SecretPhraseFound)
                                {
                                    return;
                                }
                            }
                            else if (newWordNumber < anagram.NumWords)
                            {
                                queue.Enqueue(new Node(newWord, currentNode, newWordNumber));
                                anagram.NumNodes++;
                            }
                        }
                    }

                    stringBuilder.Remove(endIndexOfCurrentPhrase, lengthToRemove);
                }
            }
        }