using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
abstract class Checker
{
public abstract bool Equals(int n);
}
class Holder
{
private Checker checker;
public Holder(Checker checker)
{
this.checker = checker;
}
public bool Equals(int n)
{
return this.checker.Equals(n);
}
}
class FizzBuzz : Checker
{
private int mod;
private string word;
public FizzBuzz(int mod, string word)
{
this.mod = mod;
this.word = word;
}
public override bool Equals(int n)
{
if (n % mod != 0)
{
return false;
}
Console.WriteLine("{0}({1})", word, n);
return true;
}
}
class Program
{
static void Main(string[] args)
{
List<Holder> holders = new List<Holder>();
holders.Add(new Holder(new FizzBuzz(15, "FizzBuzz")));
holders.Add(new Holder(new FizzBuzz(3, "Fizz")));
holders.Add(new Holder(new FizzBuzz(5, "Buzz")));
for (var i = 1; i <= 30; i++)
{
bool hit = false;
foreach (var holder in holders)
{
if (holder.Equals(i))
{
hit = true;
break;
}
}
if (!hit)
{
Console.WriteLine("{0} ", i);
}
}
}
}
}