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