DEV Community

Discussion on: [Challenge] 🐝 FizzBuzz without if/else

Collapse
 
scgrk profile image
Stephen Gerkin

Came up with 2 in Kotlin. Both could definitely be improved, but this was a fun exercise in thinking about control flow!

fun main() {
    for (i in 1..20) {
        println(fizzBuzz(i))
    }
    for (i in 1..20) {
        println(fizzBuzz2(i))
    }
}

// Technically no if or ternary!
fun fizzBuzz(num: Int) = when {
        num % 15 == 0 -> "FizzBuzz"
        num % 3  == 0-> "Fizz"
        num % 5  == 0-> "Buzz"
        else -> num.toString()
}

fun fizzBuzz2(num: Int): String {
    val isFizz = num % 3 == 0
    val isBuzz = num % 5 == 0

    while (isFizz && isBuzz) return "FizzBuzz"
    while (isBuzz) return "Buzz"
    while (isFizz) return "Fizz"

    return num.toString()
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
anras573 profile image
Anders Bo Rasmussen • Edited

I did something similar to your fizzbuzz in C# 8.0:

public static void Main()
{       
    for (var i = 1; i < 31; i++)
    {
        Console.WriteLine(FizzBuzz(i));
    }
}

public static string FizzBuzz(int number)
{
    return number switch
    {
        _ when number % 15 == 0 => "FizzBuzz",
        _ when number % 3 == 0 => "Fizz",
        _ when number % 5 == 0 => "Buzz",
        _ => number.ToString()
    };
}
Enter fullscreen mode Exit fullscreen mode