DEV Community

Quick C# Challenges to Keep Your Coding Skills Fresh 3."FizzBuzz "

Το FizzBuzz είναι ένα απλό παιχνίδι και πρόβλημα κωδικοποίησης όπου οι συμμετέχοντες αντικαθιστούν αριθμούς σε μια αύξουσα ακολουθία. Για αριθμούς που είναι πολλαπλάσια του 3, λένε «Fizz», για αριθμούς που είναι πολλαπλάσια του 5, λένε «Buzz», και για αριθμούς που είναι πολλαπλάσια και των δύο, λένε «FizzBuzz». Το πρόβλημα είναι συχνά μια δοκιμασία για να αξιολογηθούν βασικές δεξιότητες προγραμματισμού σε συνεντεύξεις.

Solution Explorer

Program Class

namespace FizzBuzz
{
    internal class Program
    {
        static void Main()
        {
            var result = FindFizzBuzz.FindFizzBuzzCulc();

            for (int i = 0; i < result.Count; i++)
            {
                Console.WriteLine(result[i]);
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

FindFizzBuzz Class

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;
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Μία καλύτερη πρακτική είναι ο κώδικας να γραφτεί με 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;
}

Enter fullscreen mode Exit fullscreen mode

Προσθήκη xunit

📁 Project setup

Φτιάξε ένα xUnit Test Project:

dotnet new xunit -n FizzBuzz.Tests

Xunit

και πρόσθεσε reference στο project με το FindFizzBuzz:

dotnet add FizzBuzz.Tests reference ../YourMainProject.csproj

FindFizzBuzzTest

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);
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Δες επίσεις Quick C# Challenges to Keep Your Coding Skills Fresh 2."Palindrome"

Top comments (0)