In herkömmlichen FizzBuzz werden Sie aufgefordert, die Zahlen von 1 bis 100 zu drucken, wobei Sie jedoch jedes Vielfache von 3 durch "Fizz", jedes Vielfache von 5 durch "Buzz" und jedes Vielfache von 3 und 5 (dh 15) durch "ersetzen. FizzBuzz ".
Als böser Interviewer habe ich jedoch meine eigene verdrehte Version von FizzBuzz erfunden, die ich BizzFuzz nennen und Ihnen in einem Coding-Interview geben möchte.
Die Spielregeln sind:
Drucken Sie jede Zahl von 1 bis 100, es sei denn, die Zahl erfüllt eine der folgenden Bedingungen.
- Wenn die Zahl durch 4 teilbar ist, drucken Sie "Fizz".
Wenn die Zahl durch 5 teilbar ist, drucken Sie "Buzz".
Wenn die Zahl durch 4 teilbar ist, die Zahl jedoch unmittelbar danach durch 5 teilbar ist, drucken Sie "FizzBuzz" anstelle von "Fizz" und drucken Sie die nächste Zahl regelmäßig aus.
Wenn die Zahl durch 5 teilbar ist, die Zahl jedoch unmittelbar danach durch 4 teilbar ist, drucken Sie "BuzzFizz" anstelle von "Buzz" und drucken Sie die nächste Zahl regelmäßig aus.
Wenn die Zahl unmittelbar vor einer durch 4 und 5 teilbaren Zahl steht , drucken Sie "Bizz".
Wenn die Zahl unmittelbar nach einer durch 4 und 5 teilbaren Zahl steht , drucken Sie "Fuzz".
Wenn die Zahl sowohl durch 4 als auch durch 5 teilbar ist, drucken Sie "BizzFuzz".
Der kürzeste Code, um alle diese Regeln in einer Sprache zu implementieren, gewinnt.
quelle
Python, 114
Ursprüngliche Lösung ( 131 ):
quelle
Python 2, 131
quelle
r
, um ihn in weniger Zeichen zu berechnen, c) alles auf eine Zeile setzen:r,F,B,Z,I=1,'Fizz','Buzz','Fuzz','Bizz'\nfor i in range(1,101):a,b=i%4,i%5*4;print~-r and i or{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z}.get(a+b,i);r=3!=a+b!=16
print 1!=a+b!=4
das ist teuflisch!exec
/eval
Combo ist teuflisch;)print{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z,1:i,4:i}.get(a+b,i)
Eine unbenutzte Referenzimplementierung in Python, die jede Regel buchstäblich implementiert (420 Zeichen):
quelle
Python, 150
Dies ist eine Ableitung der (früheren) Antwort von Minitechs, aber ich habe genug herausgedrückt, um meine eigene zu machen:
Die entgolfte Version ist nicht viel lesbarer, aber die von
r
dieser Minitech verwendete wird nur ausgelöst, wenn bei der nächsten Iteration die Summe ifa,b
entweder1,0
oder war0,4
, was äquivalent ist,i%4 or i%5 == 0
so dass sie nur unter diesen Umständen erscheinen würde. So war es möglich, die Zuordnung und Berechnung von zu entfernen undr
aus dem aktuellen Wert voni
usinga
und abzuleitenb
:Es enthält auch @ WolframHs Vorschläge.
quelle
[1,4]
(und verwenden(1,4)
oder{1,4}
neben) und vor{
.[]
Abstand. Ich habe mich gefragt, warum Sie{}
in Ihrer ursprünglichen Antwort verwendet haben.R: 170 Zeichen
quelle
Tcl, 185 Zeichen
quelle
while
Schleifen durchtime
Konstrukte ersetzt werden , um Bytes zu sparen