News for hackers. Stuff that matters.
Re:Subverting the Software Interview by Kamq on Monday January 16, 2023 @12:10AM (#34397061)
I always liked the version with no branching statements. In python it would be roughly:

    def fizz_str(n):
        return "FIZZ"


    def buzz_str(n):
        return "BUZZ"


    def fizz_buzz_str(n):
        return "FIZZBUZZ"


    def to_str(n):
        return str(n)


    indexes = [3, 0, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 1, 0, 0]


    def fizz_buzz(n):
        funcs = [
            to_str,
            fizz_str,
            buzz_str,
            fizz_buzz_str
        ]
        return funcs[indexes[n % 15]](n)


    for i in range(1, 101):
        print(fizz_buzz(i))
Re:Subverting the Software Interview by raluk on Monday January 16, 2023 @01:35AM (#34397561)
Here is another version of similar idea. (no loops and no conditions)

    fizz_buzz = lambda n : (n == 0) or not fizz_buzz(n-1) or not print(['{}',"fizz","buzz","fizzbuzz"][((n%3)==0)|(((n%5)==0)*2)].format(n))

    fizz_buzz(100)
Re:Subverting the Software Interview by rahimnathwani on Monday January 16, 2023 @11:40AM (#34402417)
Nice use of bitwise OR
Re:Subverting the Software Interview by sjadoinqwoeihad on Monday January 16, 2023 @04:38AM (#34398716)
> 0, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 1, 0, 0

I never noticed this symmetry in fizzbuzz before.