C# program to solve common FizzBuzz problem

Write down a program to solve FizzBuzz problem -This is yet another commonly asked problem in programing interviews. The problem statement is simple – write a program to print numbers from 1 to n except if a no is multiple of 3, then print “Fizz” and if it’s a multiple of five then print “Buzz” instead of numbers. If a number is multiple of both 3 and 5 then print “FizzBuzz“.Here I would show a simple method to do it.

        public static List<string> FetchFizzBuzzSeries(int number)
        {
            List<string> lstFizzBuzz = new List<string>();
            string fizz = "Fizz";
            string buzz = "Buzz";
            string FizzBuzz = "FizzBuzz";
            string currentDisplayTerm = string.Empty;
            for (int i = 1; i <= number; i++)
            {
                if ((i % 3 == 0) && (i % 5 == 0))//number divisible by 3 & 5
                {
                    currentDisplayTerm = FizzBuzz;
                }
                else if (i % 3 == 0)//number divisible by 3
                {
                    currentDisplayTerm = fizz;
                }
                else if (i % 5 == 0)//number divisible by 5
                {
                    currentDisplayTerm = buzz;
                }
                else
                {
                    currentDisplayTerm = Convert.ToString(i);
                }
                lstFizzBuzz.Add(currentDisplayTerm);
            }
            return lstFizzBuzz;
        }

In the function FetchFizzBuzzSeries() a number greater than zero is given as an input. In the function we check if the no is divisible by 3 or 5 and accordingly display the correct term.

The Unit test function(using Nunit) for the code is:

        [Test, TestCaseSource(nameof(GetFizzBuzzSeriesTestCases))]
        public void Test_FetchFizzBuzzSeries(TestFizzBuzz testData)
        {
            //Arrange             
            //Act
            var result = Num.FetchFizzBuzzSeries(testData.No);

            //Assert
            Assert.AreEqual(testData.ExpectedResult, result,
                "Fizz Buzz Series has wrong result for the number :" + testData.No);

        }

Some of the test scenarios are written in function (GetFizzBuzzSeriesTestCases) as shown below:

        private static List<TestFizzBuzz> GetFizzBuzzSeriesTestCases()
        {
            List<TestFizzBuzz> lstFizBuzzTerms = new List<TestFizzBuzz>();
            string fizz = "Fizz";
            string buzz = "Buzz";
            string FizzBuzz = "FizzBuzz";
            string[] fiboSeries = { "1" };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(1, fiboSeries));
            fiboSeries = new string[] { "1", "2" };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(2, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(3, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4" };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(4, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4", buzz };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(5, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4", buzz, fizz };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(6, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4", buzz, fizz, "7" };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(7, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4", buzz, fizz, "7", "8" };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(8, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4", buzz, fizz, "7", "8", fizz };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(9, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4", buzz, fizz, "7", "8", fizz, buzz };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(10, fiboSeries));
            fiboSeries = new string[] { "1", "2", fizz, "4", buzz, fizz, "7", "8", fizz, buzz, "11", fizz, "13", "14", FizzBuzz };
            lstFizBuzzTerms.Add(GetFizzBuzzTestData(15, fiboSeries));
            return lstFizBuzzTerms;
        }

The source code can be found here :

Note: The project is in .NET 5 .Both the functions can found in Num.cs. Also Have a look into the unit test project(RandomUtilityTest) so that you can get an idea as to how to write better unit tests.

One thought on “C# program to solve common FizzBuzz problem

Add yours

Leave a comment

Create a free website or blog at WordPress.com.

Up ↑