Créez l'implémentation FizzBuzz la plus courte possible.
Pour être considéré comme obscurci, il doit satisfaire à au moins l'un des éléments suivants:
- Ne contient aucun des mots "Fizz", "Buzz" ou "FizzBuzz"
- Ne contient pas les nombres 3, 5 ou 15.
- Utilisez l’un des éléments ci-dessus de manière trompeuse.
Rappelez-vous: le but est d’être court et difficile à suivre.
L'exemple de code qui a inspiré cette question est le suivant:
public class Default
{
enum FizzBuzz
{
Buzz = 1,
Fizz,
FizzBuzz
}
public static void Main(string[] args)
{
byte[] foo =
Convert.FromBase64String("IAmGMEiCIQySYAiDJBjCIAmGMEiCIQySYA==");
MemoryStream ms = new MemoryStream(foo);
byte[] myByte = new byte[1];
do
{
FizzBuzz fb;
ms.Read(myByte, 0, 1);
for (int i = 0; i < 4; i++)
{
fb = (FizzBuzz)(myByte[0] >> (2 * i)
& (int)FizzBuzz.FizzBuzz);
Console.Out.WriteLine( (((int)fb > 0) ? "" + fb : ""
+ ((ms.Position - 1) * 4 + i + 1)));
}
} while (ms.Position < ms.Length);
}
}
code-golf
obfuscation
restricted-source
mootinator
la source
la source
Réponses:
GolfScript,
7569656059 caractèresVous penseriez donc que GolfScript est déjà obscurci, non? Eh bien, juste pour suivre les spécifications, j'ai décidé que le programme ne contienne pas "fizz", "buzz", ni les chiffres 3, 5, ni 15. :-)
Oui, il existe des nombres avec des multiples de 5, tels que 25, 35, 90, 100 et 6875. Sont-ils des harengs rouges? Tu décides. ;-)
la source
Javascript 97 caractères - pas de chiffres du tout
Nombres ? Qui a besoin d'un numéro quand vous avez Javascript!
Remarque: une boucle infinie vous alertera de la séquence.
Bonus (666 caractères)
(seulezfor
la totalité du script a été utilisée).
la source
z
.+!![]
est identique à1
et({}+"")[5]
identiquec
) et d'abuser de la notation de tableau pour accéder à une méthode (ex.:window['eval'](
identiqueeval(
).Python - 78 caractères
la source
PostScript, 96 octets
Si obscurci, cela ressemble à des ordures aléatoires.
Usage:
$ gs -q -dNODISPLAY -dNOPROMPT file.ps
la source
C ++: 886 caractères
J'ai essayé de cacher le "fizz" et le "buzz". Pouvez-vous les repérer?
la source
DC (
256255 octets)Voilà, j’ai essayé (avec assez de succès, si je puis me le dire moi-même) de cacher quoi que ce soit sauf des lettres et
+-[];:=
(qui sont vitales et impossibles à masquer). Une erreur de segmentation se produit après avoir atteint environ 8482 unités sur ma machine, mais cela concerne les problèmes de pile liés à la manière dont la récursion est implémentée. La solution elle - même est correcte. 255 octets si vous supprimez les espaces (inclus pour faciliter la lecture)la source
C'était un peu difficile à intégrer en utilisant l'indentation, donc un point essentiel:
Ruby, 4312 caractères
https://gist.github.com/dzucconi/1f88a6dffa2f145f370f
la source
Brainfuck -
626656Va de 1 à 255
la source
Brainfuck, 708 personnages
Une description de son fonctionnement est disponible dans ma question de révision de code
la source
Haskell -
147142138 caractèresLe code est 19 caractères plus long que nécessaire, mais je pensais que l'esthétique en valait la peine! Je crois que les trois "objectifs" sont satisfaits.
la source
zZ' is applied to six arguments, but its type
(a0 -> b0 -> c0) -> [a0] -> [b0] -> [c0] 'n'a que trois["1","2","3","4","5","6"...]
.bu
,fi
,zz
etzZ
. Ceux-ci pourraient être raccourcis à une lettre noms., 33 caractères / 92 octets (non compétitif)
Try it here (Firefox only).
Ce langage est bien trop OP pour les problèmes de sources limitées.
la source
Javascript, 469 octets
C'était probablement le plus amusant que j'ai jamais eu.
Essayez-le ici
la source
Ruby - 165 caractères
Ce fut ma première tentative de code de golf. J'ai eu beaucoup de plaisir. =)
la source
Perl 6 (52 octets)
Permettez-moi de mettre une explication ici. C'est le pire abus de règle que j'ai eu dans une telle tâche. Je sais ce que vous dites - il est évident
Fizz
etBuzz
ici. Mais regardons les règles.Cela évite
3
,5
et15
. C'est donc une solution valide et très courte.la source
Scala, 295 caractères
la source
C (
237209 caractères)Bien que je ne sois pas sûr que cela soit conforme à la norme C :)
Cela fonctionne cependant. Sur Linux utilisant GCC, c’est.
la source
Python 3 - 338
C'est mon premier golf. Pas le plus court, mais c'est très moche! Aucun des nombres interdits ou des littéraux de chaîne. Firp, Burp!
la source
Python - 157
Pas tout à fait le plus court, mais j'espère que le lecteur appréciera le style purement fonctionnel et l'extensibilité à une longueur arbitrairement longue.
la source
K, 155
Je pourrais jouer un peu au golf mais je préférerais que ce soit plus obscur.
la source
Python 2 - 54 caractères
Python 3 - 56 caractères
Si vous ne voulez pas que "FizzBuzz" apparaisse:
Python 2 - 58 caractères
Python 3 - 60 caractères
Ou comment battre GolfScript avec Python;)
la source
i=0
signifie que lawhile
boucle n'est jamais entrée.i<20
.JavaScript 111 caractères - pas de numéro de clé
a=b=c=0;while(a++<99)document.write((b>1?(b=0,"Fizz"):(b++,""))+(c==4?(c=0,"Buzz"):(c++,""))+(b*c?a:"")+"<br>")
la source
C # - 218 caractères
Pourrait être raccourci si j'introduisais d'autres nombres comme ceci: (210 caractères au total)
Décidé de supprimer le mot évident fizz et buzz et d'aller légèrement plus obscurcissant. La seconde est plus courte que la première mais est légèrement plus directe sur ce qui se passe dans l'addition.
la source
Ce n'est pas exactement le golf, c'est environ 120 lignes.
Je pensais que je ferais quelque chose qui tirerait parti de tout le potentiel amusant d'un comportement non défini avec la gestion de la mémoire C ++.
la source
Ruby - 89 caractères
Je ne peux pas prendre le crédit de cette pièce brillante, mais je ne pourrais pas laisser cette question sans ma mise en œuvre obscure préférée :)
L’implémentation ci-dessus a été écrite par David Brady et provient du joyau rubis de fizzbuzz . Voici l'explication du code source:
Ruby - 87 caractères
Voici une version différente qui utilise une valeur de départ plus courte mais la table de recherche est dans un ordre différent. Voici l'explication du code source:
la source
Python, 1 ligne, 376 caractères
pep8-E501 ignoré. Ne fonctionne que dans python3.
la source
Rubis alternatif (126 caractères)
Bref et obscur, comme nous l’aimons. Le 3 et le 5 sont en réalité là-dedans mais pas en tant que littéraux entiers, donc je pense que cela compte toujours.
Notez que ceci est la version la plus courte de Ruby sans littéralement 'Fizz', 'Buzz', 'FizzBuzz' ici.
la source
Squeak (4.4) Smalltalk 206 octets
Ou même algorithme avec des messages moins explicites, même nombre de caractères
Je présente mes excuses à Alan Kay pour ce que j'ai fait à Smalltalk.
Certains de ces hacks sont portables sur les dialectes Smalltalk, d'autres nécessiteraient un calque de compatibilité Squeak ...
Notez que si vous exécutez dans un espace de travail, vous pouvez omettre des déclarations | fi zz buz | et gagnez 14 caractères.
Si nous pouvons nous permettre 357 caractères (315 avec des lettres simples), il vaut mieux éviter la triviale boucle #to: do: loop:
la source
Haskell 226 octets, y compris les espaces pour la mise en page;)
Le «vrai» code est de 160 octets et peut être compressé, mais perd alors son fizz-buzz-ness.
Exécutez-le (pour une sortie agréable):
Sortie:
la source
Perl
Je l'ai fait en 2009. C'est assez facile à comprendre, cependant.
Edit: Darn, il utilise "Fizz" et "Buzz!" :( Je pensais avoir changé cela. Tant pis alors.
la source
C 216 octets
la source