Zusammenfassung
Implementieren Sie FizzBuzz in Python mit möglichst wenigen Token.
Herausforderung
Schreiben Sie ein Programm, das die Dezimalzahlen von 1 bis einschließlich 100 druckt. Aber für Vielfache von drei drucken Sie "Fizz" anstelle der Zahl und für Vielfache von fünf "Buzz". Für Zahlen, die ein Vielfaches von drei und fünf sind, drucken Sie „FizzBuzz“. Programme müssen in einer Version von Python geschrieben sein.
Weitere Informationen finden Sie unter 1, 2, Fizz, 4, Buzz
Wertung
Ihre Punktzahl entspricht der Anzahl der Knoten im abstrakten Syntaxbaum Ihres Codes, wie von diesem Programm für Python 3 oder diesem Programm für Python 2 angegeben . Geben Sie zum Ausführen der Programme den Dateinamen Ihres Codes als Befehlszeilenargument für das Programm an. Zum Beispiel:
python simple_counter.py fizzbuzz.py
Diese Programme basieren auf dem Ast-Modul von Python . Wenn Sie irgendwelche Schwierigkeiten haben, lassen Sie es mich wissen.
Um triviale Lösungen wie das Ausführen einer langen Zeichenfolge mit dem eigentlichen Programm oder das Hardcodieren der Ausgabe zu verhindern, gibt es einige zusätzliche Einschränkungen:
Kein Token in Ihrem Code darf länger als 15 Zeichen sein. Die oben genannten Programme überprüfen diese Anforderung für Sie. Beachten Sie, dass die oben genannten Programme zur Vereinfachung der Implementierung Kommentare als Token zählen.
Die Ausführung / Auswertung von Code ist verboten.
Wenn Sie Fragen haben, ob etwas erlaubt ist, fragen Sie mich.
Bewertungsheuristiken
Die folgenden Regeln reichen normalerweise aus, um die Punktzahl Ihres Programms zu berechnen:
Block Aussagen sind 1 Punkte:
if,for ... in ...,while,else, usw.Eigenständige Aussagen sind 1 Punkt:
printin Python 2break,passusw.Variablen sind 2 Punkte
Single-Token - Literale ist 1 Punkt:
2131,"Hello, world!",TrueFunktionen sind 3 Punkte (2 für die Verwendung einer Variablen, 1 extra):
printin Python 3rangeusw.Die Betreiber sind 2 Punkte:
+,*,%,and,not, usw.=ist 1 PunktAugmented - Zuweisung ist 2 Punkte:
+=,|=usw.Klammern, Einrückungen usw. sind 0 Punkte.
Eine Linie, die einen Ausdruck enthält, im Gegensatz zu einer Zuweisung oder einem Ausdruck, ist + 1 Punkt.
Code überhaupt zu haben ist 1 Punkt.
Herausforderung:
Die niedrigste Punktzahl gewinnt. Viel Glück!