You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

114 lines
3.6 KiB

using System;
using System.Collections.Generic;
using System.Linq;
namespace FizzBuzz
{
class Program
{
static void Main(string[] args)
{
int start = 01;
int end = 1000;
//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<Divisor> divisorList = new List<Divisor>();
//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<string> Output = new List<string>();
//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(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<string> output, List<Divisor> divisorList)
{
string TABLE_FORMAT = "|{0,-20}|{1, -10}|";
string TABLE_LINE = "|--------------------|----------|";
List<string> outcomes = output.Distinct().Where(s => int.TryParse(s, out _) == false).ToList<string>();
//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; }
}
}
}