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 ;-)

DECLARE @i int = 1;
WHILE @i < 101
	BEGIN
		IF @i%3 = 0 AND @i%5 = 0
			PRINT 'FizzBuzz';
		ELSE IF @i%3 = 0
			PRINT 'Fizz';
		ELSE IF @i%5 = 0
			PRINT 'Buzz';
		ELSE
			PRINT CAST(@i AS varchar);
		SET @i += 1;
	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.

DECLARE @i int = 1;
WHILE @i < 101
	BEGIN
		IF @i%15 = 0
			PRINT 'FizzBuzz';
		ELSE IF @i%3 = 0
			PRINT 'Fizz';
		ELSE IF @i%5 = 0
			PRINT 'Buzz';
		ELSE
			PRINT CAST(@i AS varchar);
		SET @i += 1;
	END

Comments (2) -

Kovács Zsolt 12/15/2012 9:09:05 PM

Hol kérdezték ezt?

Közben utána néztem a neten ennek a FizzBuzz-nak és azt láttam, hogy sokféle megoldás létezik.

Ezután úgy gondoltam, hogy elég okos vagyok és összedobtam én is egy megoldást, ami 0 nanosec alatt fut le Smile

Persze kötött idő mellett, stesszhelyzetben azért más lehetett.

Ezt kaptam egy interjú során, de legalább még mindig jobb, mint a "Miért kerek a csatornafedél". Nem igazán kötném céghez, több helyen is megkaptam és én is szoktam kérdezni. Az egyik hely ahol előfordult az a Microsoft volt egyébként Smile.

Add comment