SQL FizzBuzz teszt

Interjú kérdés, aminek semmi értelme, de 10-ből 9-en beugranak és nem a legoptimálisabb megoldást adják :-)

Írj egy programot, ami 1-től 100-ig kiírja a számokat. Ha a szám osztható hárommal, akkor írja ki a szám helyett, hogy Fizz, ha osztható öttel, akkor Buzz, ha mind a kettővel osztható, akkor FizzBuzz.

Elsőre ezt a megoldást adtam, ami nem rossz, de nem is tökéletes ;-)

 1DECLARE @i int = 1;
 2WHILE @i < 101
 3    BEGIN
 4        IF @i%3 = 0 AND @i%5 = 0
 5            PRINT 'FizzBuzz';
 6        ELSE IF @i%3 = 0
 7            PRINT 'Fizz';
 8        ELSE IF @i%5 = 0
 9            PRINT 'Buzz';
10        ELSE
11            PRINT CAST(@i AS varchar);
12        SET @i += 1;
13    END

Aztán gondolkoztam… hahaha. Ez már sokkal jobb. Amit kihagytam: ami 3-mal és 5-tel is osztható, az ugye osztható 15-tel is.

 1DECLARE @i int = 1;
 2WHILE @i < 101
 3    BEGIN
 4        IF @i%15 = 0
 5            PRINT 'FizzBuzz';
 6        ELSE IF @i%3 = 0
 7            PRINT 'Fizz';
 8        ELSE IF @i%5 = 0
 9            PRINT 'Buzz';
10        ELSE
11            PRINT CAST(@i AS varchar);
12        SET @i += 1;
13    END