using System; using System.Collections.Generic; using System.Linq; namespace FizzBuzz { class Program { static void Main(string[] args) { int start = 01; int end = 100000; //For information about Dotnet List Can be found // https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1?view=net-6.0 List divisorList = new List(); //Intialize word list divisorList.Add(new Divisor(3, "Fizz")); divisorList.Add(new Divisor(5, "Buzz")); divisorList.Add(new Divisor(7, "Fuzz")); divisorList.Add(new Divisor(11, "Bizz")); divisorList.Add(new Divisor(13, "Biff")); List Output = new List(); //Meat & Potatoes for (int i = start; i <= end; i++) { string output = ""; foreach(Divisor div in divisorList) { if (i % div.Div == 0) output += div.Word; } if(output == string.Empty)// output == "" output = i.ToString(); Output.Add(output); Console.WriteLine(output); } Console.WriteLine("\n\n\n\n\n"); //Console.WriteLine(string.Join(",", Output.Distinct().Where(s=> int.TryParse(s, out _)==false))); PrintStatisticsReport(Output, divisorList); //PROOF of Concept /*for (int i = 1; i <= 100; i++) { if (i % 3 == 0) Console.Write("Fizz"); if (i % 5 == 0) Console.Write("Buzz"); if (i % 3 != 0 && i % 5 != 0) Console.Write(i); Console.WriteLine(); }*/ } static void PrintStatisticsReport(List output, List divisorList) { string TABLE_FORMAT = "|{0,-20}|{1, -10}|"; string TABLE_LINE = "|--------------------|----------|"; List outcomes = output.Distinct().Where(s => int.TryParse(s, out _) == false).ToList(); //TABLE HEADER Console.WriteLine(TABLE_LINE); Console.WriteLine(string.Format(TABLE_FORMAT, "OUTCOMES", "COUNT")); Console.WriteLine(TABLE_LINE); //TABLE CONTENT foreach (string outcome in outcomes) { var outcomeCount = output.FindAll(s => s.Equals(outcome)).Count(); Console.WriteLine(string.Format(TABLE_FORMAT, outcome.TrimEnd(), outcomeCount.ToString())); } //TABLE END Console.WriteLine(TABLE_LINE); } //https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/tutorials/classes class Divisor { private int _div; public Divisor(int div, string word) { Div = div; Word = word; } //Property More information: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties public int Div { get { return _div; } set { _div = value; } } public string Word { get; set; } } } }