Το FizzBuzz είναι ένα απλό παιχνίδι και πρόβλημα κωδικοποίησης όπου οι συμμετέχοντες αντικαθιστούν αριθμούς σε μια αύξουσα ακολουθία. Για αριθμούς που είναι πολλαπλάσια του 3, λένε «Fizz», για αριθμούς που είναι πολλαπλάσια του 5, λένε «Buzz», και για αριθμούς που είναι πολλαπλάσια και των δύο, λένε «FizzBuzz». Το πρόβλημα είναι συχνά μια δοκιμασία για να αξιολογηθούν βασικές δεξιότητες προγραμματισμού σε συνεντεύξεις.
namespace FizzBuzz
{
internal class Program
{
static void Main()
{
var result = FindFizzBuzz.FindFizzBuzzCulc();
for (int i = 0; i < result.Count; i++)
{
Console.WriteLine(result[i]);
}
}
}
}
namespace FizzBuzz
{
public static class FindFizzBuzz
{
public static List<string> FindFizzBuzzCulc()
{
var results = new List<string>();
for (int i = 1; i <= 100; i++)
{
if (i % 15 == 0)
results.Add("FizzBuzz");
else if (i % 3 == 0)
results.Add("Fizz");
else if (i % 5 == 0)
results.Add("Buzz");
else
results.Add(i.ToString());
}
return results;
}
}
}
Μία καλύτερη πρακτική είναι ο κώδικας να γραφτεί με switch case
Χρησιμοποιεί pattern matching (case int n when ...) αντί για if-else.
- Πολύ πιο εύκολα επεκτάσιμο, π.χ. αν θέλεις να προσθέσεις “Bazz” για πολλαπλάσια του 7.
- Πιο readable, ειδικά όταν έχεις πολλούς κανόνες.
public static List<string> FindFizzBuzzCulc()
{
var results = new List<string>();
for (int i = 1; i <= 100; i++)
{
switch (i)
{
case int n when n % 15 == 0:
results.Add("FizzBuzz");
break;
case int n when n % 3 == 0:
results.Add("Fizz");
break;
case int n when n % 5 == 0:
results.Add("Buzz");
break;
default:
results.Add(i.ToString());
break;
}
}
return results;
}
Προσθήκη xunit
📁 Project setup
Φτιάξε ένα xUnit Test Project:
dotnet new xunit -n FizzBuzz.Tests
και πρόσθεσε reference στο project με το FindFizzBuzz:
dotnet add FizzBuzz.Tests reference ../YourMainProject.csproj
namespace FizzBuzz.Tests
{
public class FindFizzBuzzTest
{
[Fact]
public void Should_Return_100_Items()
{
// Act
var results = FindFizzBuzz.FindFizzBuzzCulc();
// Assert
Assert.Equal(100, results.Count);
}
[Theory]
[InlineData(1, "1")]
[InlineData(3, "Fizz")]
[InlineData(5, "Buzz")]
[InlineData(15, "FizzBuzz")]
[InlineData(30, "FizzBuzz")]
[InlineData(98, "98")]
public void Should_Return_Correct_FizzBuzz_Value(int index, string expected)
{
// Act
var results = FindFizzBuzz.FindFizzBuzzCulc();
// Assert
Assert.Equal(expected, results[index - 1]); // γιατί η λίστα ξεκινάει από index 0
}
[Fact]
public void Should_Contain_AtLeast_One_FizzBuzz()
{
var results = FindFizzBuzz.FindFizzBuzzCulc();
Assert.Contains("FizzBuzz", results);
}
}
}
Δες επίσεις Quick C# Challenges to Keep Your Coding Skills Fresh 2."Palindrome"
Top comments (0)