Dans FizzBuzz traditionnel, vous êtes invité à imprimer les nombres de 1 à 100, mais en remplaçant chaque multiple de 3 par "Fizz", chaque multiple de 5 par "Buzz" et chaque multiple de 3 et 5 (c.-à-d. 15) par " FizzBuzz ".
Cependant, en tant qu'intervieweur diabolique, j'ai inventé ma propre version tordue de FizzBuzz, que j'ai décidé de nommer BizzFuzz et de vous donner dans une interview de codage.
Les règles du jeu sont les suivantes:
Imprimez chaque numéro de 1 à 100, sauf si le numéro remplit l'une des conditions ci-dessous.
- Si le nombre est divisible par 4, imprimez "Fizz".
Si le nombre est divisible par 5, imprimez "Buzz".
Si le nombre est divisible par 4, mais que le nombre immédiatement après est divisible par 5, imprimez "FizzBuzz" au lieu de "Fizz" et imprimez régulièrement le numéro suivant.
Si le nombre est divisible par 5, mais que le nombre immédiatement après est divisible par 4, imprimez "BuzzFizz" au lieu de "Buzz" et imprimez régulièrement le numéro suivant.
Si le nombre est immédiatement avant un nombre divisible par 4 et 5, imprimez "Bizz".
Si le nombre est immédiatement après un nombre divisible par 4 et 5, imprimez "Fuzz".
Si le nombre est divisible par 4 et 5, imprimez "BizzFuzz".
Le code le plus court pour implémenter toutes ces règles dans n'importe quelle langue l'emporte.
Python, 114
Solution originale ( 131 ):
la source
Python 2, 131
la source
r
le calculer en moins de caractères, c) tout mettre sur une seule ligne: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
c'est diabolique!exec
/eval
combo est diabolique;)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)
Une implémentation de référence non golfée en Python qui implémente littéralement chaque règle (420 caractères):
la source
Python, 150
Ceci est un dérivé de la réponse des minitechs (plus tôt), mais j'en ai assez pressé pour faire la mienne:
La version dégolfée n'est pas beaucoup plus lisible, mais celle
r
que minitech utilisait n'est déclenchée que si à la prochaine itération la somme sia,b
était soit1,0
ou0,4
, ce qui équivaut ài%4 or i%5 == 0
ce qu'elle n'allait apparaître que dans ces circonstances. Il a donc été possible de supprimer l'affectation et le calcul der
et de les dériver de la valeur actuelle de l'i
utilisation dea
etb
:Il comprend également les suggestions de @ WolframH.
la source
[1,4]
(et utilisez(1,4)
ou en{1,4}
plus) et avant{
.[]
espacement. Je me demandais pourquoi vous l'avez utilisé{}
dans votre réponse originale.R: 170 caractères
la source
Tcl, 185 caractères
la source
while
boucles peuvent être remplacées par destime
constructions pour économiser des octets