public interface IFizzBuzzRule
string GetResult(int number);
class FizzRule : IFizzBuzzRule
public bool Check(int number) => number % 3 == 0;
public string GetResult(int number) => "Fizz";
class BuzzRule : IFizzBuzzRule
public bool Check(int number) => number % 5 == 0;
public string GetResult(int number) => "Buzz";
class FizzBuzzRule : IFizzBuzzRule
public bool Check(int number) => number % 3 == 0 && number % 5 == 0;
public string GetResult(int number) => "Fizz Buzz";
class DefaultRule : IFizzBuzzRule
public bool Check(int number) => true;
public string GetResult(int number) => number.ToString();
private readonly IFizzBuzzRule[] rules;
rules = new IFizzBuzzRule[]
public string GetResult(int number)
foreach (var rule in rules)
return rule.GetResult(number);
return number.ToString();
static void Main(string[] args)
FizzBuzz fizzBuzz = new FizzBuzz();
Console.WriteLine("Give the number Count");
int count_num = Int32.Parse(Console.ReadLine());
Console.WriteLine("Enter numbers one by one ");
for (int i = 0; i < count_num-1; i++)
num[i] = Int32.Parse(Console.ReadLine());
for (int j = 0; j < count_num-1; j++)
Console.WriteLine(fizzBuzz.GetResult(j));