Beispiel #1
0
        private IDajare connectWithDoshi(IWord doshi)
        {
            if (doshi.GetHinshi() != Hinshi.Doshi)
            {
                throw new Exception();
            }
            IDajare       res = new Dajare();
            WordEvaluator we  = WordEvaluator.GetInstance();

            IWord[] 助詞s =
            {
                new Word("を", Hinshi.Joshi),
                new Word("へ", Hinshi.Joshi),
                new Word("が", Hinshi.Joshi)
            };
            IWord best助詞 = null;
            long  max    = 0;

            foreach (IWord j in 助詞s)
            {
                long e1   = we.Evaluate(meishi.ToKanji() + j.ToKanji());
                long e2   = we.Evaluate(j.ToKanji() + doshi.ToKanji());
                long eval = e1 * e1 + e2 * e2;
                if (max > eval)
                {
                    max    = eval;
                    best助詞 = j;
                }
            }
            res.Add(this.meishi);
            res.Add(best助詞);
            res.Add(doshi);
            return(res);
        }
        public void Example2(string word, bool expectedResult)
        {
            var evaluator = new WordEvaluator()
            {
                Rules =
                {
                    new LetterDuplicationRule(2, 1),
                    new RepeatingLetterRule()
                }
            };

            var isNice = evaluator.IsNiceWord(word);

            Assert.Equal(expectedResult, isNice);
        }
        public void Example1(string word, bool expectedResult)
        {
            var evaluator = new WordEvaluator()
            {
                Rules =
                {
                    new LetterEvalRule(new[] { 'a', 'e', 'i', 'o', 'u' }, 3),
                    new LetterDuplicationRule(2, 1),
                    new WordExclusion("ab"),
                    new WordExclusion("cd"),
                    new WordExclusion("pq"),
                    new WordExclusion("xy"),
                }
            };

            var isNice = evaluator.IsNiceWord(word);

            Assert.Equal(expectedResult, isNice);
        }
        public void Puzzle2()
        {
            var input = FileReader
                        .GetResource("AdventOfCode.Tests._2015.Day5.PuzzleInput.txt");

            var evaluator = new WordEvaluator
            {
                Rules =
                {
                    new RepeatingPairRule(),
                    new RepeatingLetterRule()
                }
            };

            var count = input.Split(Environment.NewLine)
                        .Count(word => evaluator.IsNiceWord(word));

            Assert.Equal(53, count);
        }
Beispiel #5
0
        private IDajare connectWithMeishi(IWord meishi)
        {
            if (meishi.GetHinshi() != Hinshi.Meishi)
            {
                throw new Exception();
            }
            IDajare       res = new Dajare();
            WordEvaluator we  = WordEvaluator.GetInstance();

            IWord[] testers  = { new Word("な", Hinshi.Joshi), new Word("は", Hinshi.Joshi) };
            long    max      = -114514;
            IWord   better助詞 = null;

            foreach (IWord j in testers)
            {
                long eval = we.Evaluate(this.meishi.ToKanji() + j.ToKanji());
                if (max < eval)
                {
                    max      = eval;
                    better助詞 = j;
                }
            }
            if (better助詞.ToHiragana() == "な")
            {
                res.Add(this.meishi);
                res.Add(better助詞);
                res.Add(meishi);
                return(res);
            }
            IWord[] 助詞s =
            {
                new Word("は",  Hinshi.Joshi),
                new Word("と",  Hinshi.Joshi),
                new Word("より", Hinshi.Joshi),
                new Word("の",  Hinshi.Joshi)
            };
            Random random = new Random();

            res.Add(this.meishi);
            res.Add(助詞s[random.Next(助詞s.Length)]);
            res.Add(meishi);
            return(res);
        }
        public void Puzzle1()
        {
            var input = FileReader
                        .GetResource("AdventOfCode.Tests._2015.Day5.PuzzleInput.txt");

            var evaluator = new WordEvaluator
            {
                Rules =
                {
                    new LetterEvalRule(new[] { 'a', 'e', 'i', 'o', 'u' }, 3),
                    new LetterDuplicationRule(2, 1),
                    new WordExclusion("ab"),
                    new WordExclusion("cd"),
                    new WordExclusion("pq"),
                    new WordExclusion("xy"),
                }
            };

            var count = input.Split(Environment.NewLine)
                        .Count(word => evaluator.IsNiceWord(word));

            Assert.Equal(258, count);
        }
 public static WordEvaluator GetInstance()
 {
     return(instance ?? (instance = new GoogleWordEvaluator()));
 }
Beispiel #8
0
 public double GetEvalution()
 {
     return((double)WordEvaluator.GetInstance().Evaluate(_word.ToKanji()));
 }