Erstellen Sie die kürzestmögliche verschleierte FizzBuzz-Implementierung.
Um als verschleiert zu gelten, muss mindestens eine der folgenden Bedingungen erfüllt sein:
- Enthält keine der Wörter "Fizz", "Buzz" oder "FizzBuzz"
- Enthält nicht die Nummern 3, 5 oder 15.
- Verwenden Sie eine der oben genannten Angaben auf irreführende Weise.
Denken Sie daran: Das Ziel ist es, kurz und schwer zu folgen.
Das Codebeispiel, das diese Frage inspiriert hat, sieht folgendermaßen aus:
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
quelle
quelle
Antworten:
GolfScript,
7569656059 ZeichenSie würden also denken, GolfScript an sich ist bereits verschleiert, oder? Nun, nur um der Spezifikation zu folgen, habe ich beschlossen, dass das Programm weder "fizz", "buzz" noch die Nummern 3, 5 oder 15 enthält. :-)
Ja, es gibt einige Zahlen mit Vielfachen von 5, wie 25, 35, 90, 100 und 6875. Sind sie rote Heringe? Du entscheidest. ;-)
quelle
Javascript 97 Zeichen - überhaupt keine Zahlen
Zahlen? Wer braucht die Nummer, wenn Sie Javascript haben!
Hinweis: Es gibt eine Endlosschleife, die Sie auf die Sequenz hinweist.
Bonus (666 Zeichen)
(wurde nurzfor
im gesamten Skript verwendet).
quelle
z
.+!![]
ist dasselbe wie1
und({}+"")[5]
ist dasselbe wiec
) und die Array-Notation für die Zugriffsmethode zu missbrauchen (Beispiel:window['eval'](
ist dasselbeeval(
).Python - 78 Zeichen
quelle
PostScript, 96 Bytes
So verschleiert sieht es aus wie zufälliger Müll.
Verwendungszweck:
$ gs -q -dNODISPLAY -dNOPROMPT file.ps
quelle
C ++: 886 Zeichen
Ich habe versucht, das "Fizz" und das "Buzz" zu verbergen. kannst du sie sehen?
quelle
DC (
256255 Bytes)Hier habe ich versucht (ziemlich erfolgreich, wenn ich so sagen darf), etwas außer Buchstaben zu verbergen, und
+-[];:=
(die lebenswichtig und unmöglich zu verschleiern sind). Nachdem ich auf meinem Computer ungefähr 8482 erreicht habe, tritt ein Segfault auf. Dies hat jedoch mit Stack-Problemen zu tun, die sich auf die Art und Weise beziehen, wie die Rekursion implementiert wird. Die Lösung selbst ist richtig. 255 Bytes, wenn Sie das Leerzeichen entfernen (zum leichteren Lesen enthalten)quelle
Das Einbetten mit der Einrückung war etwas schwierig.
Rubin, 4312 Zeichen
https://gist.github.com/dzucconi/1f88a6dffa2f145f370f
quelle
Brainfuck -
626656Geht von 1 bis 255
quelle
Brainfuck, 708 Zeichen
Eine Beschreibung der Funktionsweise finden Sie in meiner Frage zur Codeüberprüfung
quelle
Haskell -
147142138 ZeichenDer Code ist 19 Zeichen länger als nötig, aber die Ästhetik hat sich gelohnt! Ich glaube, dass alle drei "Ziele" erfüllt sind.
quelle
zZ' is applied to six arguments, but its type
(a0 -> b0 -> c0) -> [a0] -> [b0] -> [c0] 'hat nur drei["1","2","3","4","5","6"...]
.bu
,fi
,zz
, undzZ
. Diese können auf einen Buchstaben gekürzt werden.𝔼𝕊𝕄𝕚𝕟, 33 Zeichen / 92 Byte (nicht konkurrenzfähig)
Try it here (Firefox only).
Diese Sprache ist viel zu OP für eingeschränkte Quellcode-Herausforderungen.
quelle
Javascript, 469 Bytes
Das war wahrscheinlich der lustigste, den ich je hatte.
Probieren Sie es hier aus
quelle
Ruby - 165 Zeichen
Dies war mein erster Versuch, Code Golf zu spielen. Ich hatte eine Menge Spaß. =)
quelle
Perl 6 (52 Bytes)
Lassen Sie mich hier eine Erklärung abgeben. Es ist der schlimmste Regelmissbrauch, den ich bei einer solchen Aufgabe begangen habe. Ich weiß, was Sie sagen - es ist offensichtlich
Fizz
undBuzz
hier. Aber schauen wir uns die Regeln an.Dies vermeidet
3
,5
und15
. Daher ist es eine gültige und wirklich kurze Lösung.quelle
Scala, 295 Zeichen
quelle
C (
237209 Zeichen)Obwohl ich nicht sicher bin, ob dies dem C-Standard entspricht :)
Es funktioniert jedoch. Unter Linux mit GCC also.
quelle
Python 3 - 338
Dies ist mein erster Golf. Nicht die kürzeste, aber es ist ziemlich hässlich! Keine der verbotenen Zahlen oder String-Literale. Firp, Burp!
quelle
Python - 157
Nicht ganz die kürzeste, aber ich hoffe, der Leser wird den reinen Funktionsstil und die Erweiterbarkeit zu beliebig langen Zählungen zu schätzen wissen.
quelle
K 155
Ich könnte ein bisschen Golf spielen, aber es wäre mir lieber, wenn es etwas verschleierter wäre.
quelle
Python 2 - 54 Zeichen
Python 3 - 56 Zeichen
Wenn Sie nicht möchten, dass "FizzBuzz" angezeigt wird:
Python 2 - 58 Zeichen
Python 3 - 60 Zeichen
Oder wie man GolfScript mit Python schlägt;)
quelle
i=0
diewhile
Schleife nie betreten wird.i<20
.JavaScript 111 Zeichen - keine Schlüsselnummern
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>")
quelle
C # - 218 Zeichen
Könnte gekürzt werden, wenn ich andere Zahlen wie folgt einführe: (210 Zeichen insgesamt)
Beschlossen, das offensichtliche Wort Fizz und Buzz zu entfernen und für etwas mehr Verschleierung zu gehen. Die zweite ist kürzer als die erste, hängt jedoch etwas direkter von dem ab, was in der Ergänzung vorkommt.
quelle
Dies ist nicht gerade Golf, es sind ungefähr 120 Linien.
Ich dachte, ich würde etwas tun, das all das Spaßpotential für undefiniertes Verhalten mit der C ++ - Speicherverwaltung ausnutzt.
quelle
Ruby - 89 Zeichen
Ich kann dieses Stück Brillanz nicht würdigen, aber ich konnte diese Frage nicht ohne meine verborgene Lieblingsimplementierung lassen :)
Die obige Implementierung wurde von David Brady geschrieben und stammt aus dem Ruby Gem von Fizzbuzz . Hier ist die Erklärung aus dem Quellcode:
Rubin - 87 Zeichen
Hier ist eine andere Version, die einen kürzeren Startwert verwendet, die Nachschlagetabelle jedoch in einer anderen Reihenfolge. Hier ist die Erklärung aus dem Quellcode:
quelle
Python, 1 Zeile, 376 Zeichen
pep8-E501 wird ignoriert. Funktioniert nur in Python3.
quelle
Alternativer Rubin (126 Zeichen)
Kurz und dunkel, wie es uns gefällt. Die 3 und die 5 sind eigentlich drin, aber nicht als Integer-Literale, also denke ich, dass das immer noch zählt.
Beachten Sie, dass dies die kürzeste Ruby-Version ist, bei der es hier kein wörtliches "Fizz", "Buzz" oder "FizzBuzz" gibt.
quelle
Quietschen (4.4) Smalltalk 206 Bytes
Oder derselbe Algorithmus mit weniger expliziten Nachrichten, die gleiche Anzahl von Zeichen
Ich entschuldige mich bei Alan Kay für das, was ich Smalltalk angetan habe.
Einige dieser Hacks sind für Smalltalk-Dialekte portabel, andere erfordern eine Squeak-Kompatibilitätsebene ...
Beachten Sie, dass Sie bei der Ausführung in einem Arbeitsbereich Deklarationen | fi zz buz | auslassen können und gewinne 14 Zeichen.
Wenn wir uns 357 Zeichen leisten können (315 mit einzelnen Buchstaben), ist es besser, triviale #to: do: loop: zu vermeiden.
quelle
Haskell 226 Bytes, einschließlich des Leerzeichens für das Layout;)
Der 'echte' Code ist 160 Bytes und kann komprimiert werden, verliert dann aber das Summen.
Führen Sie es aus (für eine gute Ausgabe):
Ausgabe:
quelle
Perl
Eine, die ich 2009 gemacht habe. Es ist jedoch ziemlich einfach herauszufinden.
Edit: Verdammt, es verwendet "Fizz" und "Buzz!" :( Ich dachte, ich hätte das geändert. Na egal.
quelle
C 216 Bytes
quelle