Beispiel #1
0
        public void All_3_Fizz_5_Buzz_15_FizzBuzz_Test()
        {
            var m15 = GetMultiplesByDivisor(15, numbers);
            var m3  = GetMultiplesByDivisor(3, numbers).Where(n => !m15.Contains(n)).ToArray();
            var m5  = GetMultiplesByDivisor(5, numbers).Where(n => !m15.Contains(n)).ToArray();


            var other = numbers.Where(n => !m3.Contains(n) && !m5.Contains(n) && !m15.Contains(n)).ToArray();

            var fb15 = new FBDivisorItem(15, "FizzBuzz");
            var fb5  = new FBDivisorItem(5, "Buzz");
            var fb3  = new FBDivisorItem(3, "Fizz");



            var fbproc = new FBProcessor(numbers, new List <IFBItem> {
                fb15, fb5, fb3
            });

            var procresults = fbproc.GetResults();

            var m3count    = procresults.Where(n => n.Text == "Fizz").Count();
            var m5count    = procresults.Where(n => n.Text == "Buzz").Count();
            var m15count   = procresults.Where(n => n.Text == "FizzBuzz").Count();
            var othercount = procresults.Where(n => n.Text == null).Count();

            Assert.IsTrue(m3.Count() == m3count && m5.Count() == m5count && m15.Count() == m15count && othercount == other.Count());
        }
Beispiel #2
0
        private static FBResult[] ProcessResultsFizzBuzz()
        {
            FBDivisorItem  fb15    = new FBDivisorItem(15, "FizzBuzz");
            List <IFBItem> fbitems = new List <IFBItem>();

            fbitems.Add(fb15);
            FBProcessor fbproc = new FBProcessor(numbers, fbitems);

            return(fbproc.GetResults());
        }
Beispiel #3
0
        private static FBResult[] ProcessResultsOutsideAssemblyPalindrome()
        {
            PalindromeOutside op      = new PalindromeOutside(10);
            List <IFBItem>    fbitems = new List <IFBItem>();

            fbitems.Add(op);
            FBProcessor fbproc = new FBProcessor(numbers, fbitems);

            return(fbproc.GetResults());
        }
Beispiel #4
0
        private static FBResult[] ProcessResultsFizzAndPalindrome()
        {
            FBDivisorItem    fb3     = new FBDivisorItem(3, "Fizz");
            FBPalindromeItem fbp     = new FBPalindromeItem(10);
            List <IFBItem>   fbitems = new List <IFBItem>();

            fbitems.Add(fb3);
            fbitems.Add(fbp);
            FBProcessor fbproc = new FBProcessor(numbers, fbitems);

            return(fbproc.GetResults());
        }
Beispiel #5
0
        public void All_Palindrome_PerfectSqaure_FizzBuzz_Test()
        {
            var sq = new int[] { 1, 4, 9, 16 };

            //Single digits are counted as pailndromes, but the perfect squares are left out.
            //So 1,4 & 9 are not included.
            var p = new int[] { 2, 3, 5, 6, 7, 8, 11 };


            var m15 = GetMultiplesByDivisor(15, numbers20).Where(n => !p.Contains(n) && !sq.Contains(n)).ToArray();
            var m3  = GetMultiplesByDivisor(3, numbers20).Where(n => !m15.Contains(n) && !p.Contains(n) && !sq.Contains(n)).ToArray();
            var m5  = GetMultiplesByDivisor(5, numbers20).Where(n => !m15.Contains(n) && !p.Contains(n) && !sq.Contains(n)).ToArray();


            var other = numbers20.Where(n => !m3.Contains(n) && !m5.Contains(n) && !m15.Contains(n) && !p.Contains(n) && !sq.Contains(n)).ToArray();

            var fb15 = new FBDivisorItem(15, "FizzBuzz");
            var fb5  = new FBDivisorItem(5, "Buzz");
            var fb3  = new FBDivisorItem(3, "Fizz");
            var fbp  = new FBPalindromeItem(20);
            var fbsq = new FBPerfectSquareItem(25);


            var fbproc = new FBProcessor(numbers20, new List <IFBItem> {
                fb15, fb5, fb3, fbp, fbsq
            });

            var procresults = fbproc.GetResults();

            var m3count  = procresults.Where(n => n.Text == "Fizz").Count();
            var m5count  = procresults.Where(n => n.Text == "Buzz").Count();
            var m15count = procresults.Where(n => n.Text == "FizzBuzz").Count();
            var pcount   = procresults.Where(n => n.Text == "Palindrome!").Count();
            var sqcount  = procresults.Where(n => n.Text == "Perfect Square!").Count();

            var othercount = procresults.Where(n => n.Text == null).Count();

            Assert.IsTrue(
                m3count == m3.Count() &&
                m5count == m5.Count() &&
                m15count == m15.Count() &&
                othercount == other.Count() &&
                pcount == p.Count() &&
                sqcount == sq.Count()
                );
        }
Beispiel #6
0
        private static bool CheckForCondition(int[] numstocheck, List <IFBItem> fbitems, string textcheck)
        {
            var  fbproc         = new FBProcessor(numstocheck, fbitems);
            var  results        = fbproc.GetResults();
            bool conditioncheck = false;

            foreach (int i in numstocheck)
            {
                foreach (IFBItem fbi in fbitems.OrderByDescending(fb => fb.OrderCheck))
                {
                    FBResult fbresult = fbi.GetResult(i);
                    if (fbresult.Text == textcheck)
                    {
                        break;
                    }
                    if (fbresult.Text != textcheck && fbresult.FBValue.HasValue == true)
                    {
                        conditioncheck = true;
                        break;
                    }
                }
            }
            return(conditioncheck);
        }
Beispiel #7
0
        static void Main(string[] args)
        {
            numbers = Enumerable.Range(1, 100).ToArray();
            //var results = ProcessResultsFizz(); //Only multiples of 3 rule.
            //var results = ProcessResultsBuzz(); //Only Multiples of 5 rule.
            //var results = ProcessResultsFizzBuzz(); //Only Multiples of 15 rule.
            //var results = ProcessResultsFullFizzBuzz(); //All three fizzbuzz rules.
            //var results = ProcessResultsFizzAndPalindrome(); //Only multiples of 3 and palindromes.
            //var results = ProcessResultsOutsideAssemblyPalindrome(); //Palindrome rule applied based upon outside implementation of IFBItem.

            /*
             * foreach (var r in results)
             * {
             *  Console.WriteLine(r.ToString());
             * }
             */
            FBDivisorItem fbitem3  = new FBDivisorItem(3, "Fizz");
            FBDivisorItem fbitem5  = new FBDivisorItem(5, "Buzz");
            FBDivisorItem fbitem15 = new FBDivisorItem(15, "FizzBuzz");

            List <IFBItem> fbitems = new List <IFBItem>()
            {
                fbitem3, fbitem5, fbitem15
            };

            for (int i = 0; i <= int.MaxValue; i++)
            {
                var result = FBProcessor.GetResult(i, fbitems);
                if (i % 1000000 == 0 || i < 1000)
                {
                    Console.WriteLine(result);
                }
            }

            Console.ReadKey();
        }