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:
print
in Python 2break
,pass
usw.Variablen sind 2 Punkte
Single-Token - Literale ist 1 Punkt:
2131
,"Hello, world!"
,True
Funktionen sind 3 Punkte (2 für die Verwendung einer Variablen, 1 extra):
print
in Python 3range
usw.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!
quelle
Antworten:
33
Python 2
quelle
46
quelle
repr
soweit ich mich erinnere, keine Backticks .3934quelle
Python 2, 36
Ich denke, dies ist der kürzeste Ansatz, bei dem keine großen Zahlen / Zeichenfolgen verwendet werden.
quelle