コード例 #1
0
        public void Insert()
        {
            using (var wordsCounter = WordsCounter.Instance()) {
                const string firstKey = "1";

                wordsCounter.Insert(firstKey, "ABC");

                Assert.AreEqual(1, wordsCounter.WordDictionary.Count());
                Assert.AreEqual(firstKey, wordsCounter.WordDictionary.First().Key);
                Assert.AreEqual(1, wordsCounter.WordDictionary.First().Value.Count);
                Assert.AreEqual("ABC", wordsCounter.WordDictionary.First().Value.First());
            }
        }
コード例 #2
0
        public void Insert_By_Long()
        {
            using (var wordsCounter = WordsCounter.Instance()) {
                const long firstKey = 1;

                wordsCounter.Insert(firstKey, "ABC");

                Assert.AreEqual(1, wordsCounter.WordDictionaryByPrimeNumber.Count());
                Assert.AreEqual(firstKey, wordsCounter.WordDictionaryByPrimeNumber.First().Key);
                Assert.AreEqual(1, wordsCounter.WordDictionaryByPrimeNumber.First().Value.Count);
                Assert.AreEqual("ABC", wordsCounter.WordDictionaryByPrimeNumber.First().Value.First());
            }
        }
コード例 #3
0
        public void Insert_Duplicate_Case_Sensitive()
        {
            using (var wordsCounter = WordsCounter.Instance()) {
                const string firstKey = "1";

                wordsCounter.Insert(firstKey, "ABC");
                wordsCounter.Insert(firstKey, "abc");

                Assert.AreEqual(1, wordsCounter.WordDictionary.Count());
                Assert.AreEqual(firstKey, wordsCounter.WordDictionary.First().Key);
                Assert.AreEqual(2, wordsCounter.WordDictionary.First().Value.Count());
                Assert.AreEqual("ABC", wordsCounter.WordDictionary.First().Value.First());
                Assert.AreEqual("abc", wordsCounter.WordDictionary.First().Value[1]);
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: chrischau/CodeKata
 static void Output(WordsCounter wordCounter, string fileName, double timeTook)
 {
     using (var writer = new StreamWriter(fileName)) {
     foreach (var words in wordCounter.WordDictionary.OrderByDescending(list => list.Value.Count())) {
       foreach (var word in words.Value) {
     //Console.Write(word + " ");
     writer.Write(word + " ");
       }
       //Console.WriteLine();
       writer.WriteLine();
     }
     writer.WriteLine();
     writer.WriteLine("Time took: {0} seconds", timeTook);
       }
 }
コード例 #5
0
        public void Insert_Duplicate_Case_Sensitive_By_Long()
        {
            using (var wordsCounter = WordsCounter.Instance()) {
                const long firstKey = 1;

                wordsCounter.Insert(firstKey, "ABC");
                wordsCounter.Insert(firstKey, "abc");

                Assert.AreEqual(1, wordsCounter.WordDictionaryByPrimeNumber.Count());
                Assert.AreEqual(firstKey, wordsCounter.WordDictionaryByPrimeNumber.First().Key);
                Assert.AreEqual(2, wordsCounter.WordDictionaryByPrimeNumber.First().Value.Count());
                Assert.AreEqual("ABC", wordsCounter.WordDictionaryByPrimeNumber.First().Value.First());
                Assert.AreEqual("abc", wordsCounter.WordDictionaryByPrimeNumber.First().Value[1]);
            }
        }
コード例 #6
0
        public void Insert_Multiple()
        {
            using (var wordsCounter = WordsCounter.Instance()) {
                const string firstKey  = "1";
                const string secondKey = "2";

                wordsCounter.Insert(firstKey, "ABC");
                wordsCounter.Insert(secondKey, "ABCD");

                Assert.AreEqual(2, wordsCounter.WordDictionary.Count());
                Assert.AreEqual(firstKey, wordsCounter.WordDictionary.First().Key);
                Assert.IsNotNull(wordsCounter.WordDictionary[secondKey]);
                Assert.AreEqual("ABC", wordsCounter.WordDictionary.First().Value.First());
                Assert.AreEqual("ABCD", wordsCounter.WordDictionary[secondKey].First());
            }
        }
コード例 #7
0
        public void Insert_Multiple_By_Long()
        {
            using (var wordsCounter = WordsCounter.Instance()) {
                const long firstKey  = 1;
                const long secondKey = 2;

                wordsCounter.Insert(firstKey, "ABC");
                wordsCounter.Insert(secondKey, "ABCD");

                Assert.AreEqual(2, wordsCounter.WordDictionaryByPrimeNumber.Count());
                Assert.AreEqual(firstKey, wordsCounter.WordDictionaryByPrimeNumber.First().Key);
                Assert.IsNotNull(wordsCounter.WordDictionaryByPrimeNumber[secondKey]);
                Assert.AreEqual("ABC", wordsCounter.WordDictionaryByPrimeNumber.First().Value.First());
                Assert.AreEqual("ABCD", wordsCounter.WordDictionaryByPrimeNumber[secondKey].First());
            }
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: chrischau/CodeKata
        static void AnagramByPrimeNumber(WordsCounter wordCounter, DateTime time)
        {
            using (var reader = new StreamReader(@"..\..\..\wordlist.txt")) {
            while (!reader.EndOfStream) {
              var word = reader.ReadLine();
              wordCounter.Insert(CharactersCounterByPrimeNumbers.Count(word), word);
            }
              }

              var timeTook = (DateTime.Now - time).TotalSeconds;

              Console.WriteLine(@"Took {0} seconds to process {1} words. ",
                        timeTook,
                        wordCount);

              Output(wordCounter, "Anagram By Prime Number Output.txt", timeTook);
        }
コード例 #9
0
 static void Output(WordsCounter wordCounter, string fileName, double timeTook)
 {
     using (var writer = new StreamWriter(fileName)) {
         foreach (var words in wordCounter.WordDictionary.OrderByDescending(list => list.Value.Count()))
         {
             foreach (var word in words.Value)
             {
                 //Console.Write(word + " ");
                 writer.Write(word + " ");
             }
             //Console.WriteLine();
             writer.WriteLine();
         }
         writer.WriteLine();
         writer.WriteLine("Time took: {0} seconds", timeTook);
     }
 }
コード例 #10
0
        static void AnagramByPrimeNumber(WordsCounter wordCounter, DateTime time)
        {
            using (var reader = new StreamReader(@"..\..\..\wordlist.txt")) {
                while (!reader.EndOfStream)
                {
                    var word = reader.ReadLine();
                    wordCounter.Insert(CharactersCounterByPrimeNumbers.Count(word), word);
                }
            }

            var timeTook = (DateTime.Now - time).TotalSeconds;

            Console.WriteLine(@"Took {0} seconds to process {1} words. ",
                              timeTook,
                              wordCount);

            Output(wordCounter, "Anagram By Prime Number Output.txt", timeTook);
        }
コード例 #11
0
        static void Main(string[] args)
        {
            var wordCounter = WordsCounter.Instance();

            Console.WriteLine("Anagram...");
            Console.WriteLine();
            Console.WriteLine("Using Character List Method");

            AnagramByCharacterList(wordCounter, DateTime.Now);

            Console.WriteLine();
            Console.WriteLine("Using Character Prime Number Method");

            AnagramByPrimeNumber(wordCounter, DateTime.Now);

            Console.WriteLine();
            Console.WriteLine("Finished.");
            Console.ReadLine();
        }
コード例 #12
0
ファイル: WordsCounter.cs プロジェクト: chrischau/CodeKata
 public void Dispose()
 {
     wordsCounter = null;
 }
コード例 #13
0
ファイル: WordsCounter.cs プロジェクト: chrischau/CodeKata
 public static WordsCounter Instance()
 {
     return wordsCounter ?? (wordsCounter = new WordsCounter());
 }
コード例 #14
0
 public void Dispose()
 {
     wordsCounter = null;
 }
コード例 #15
0
 public static WordsCounter Instance()
 {
     return(wordsCounter ?? (wordsCounter = new WordsCounter()));
 }