Resumen
Implemente FizzBuzz en Python, con la menor cantidad de tokens posibles.
Desafío
Escriba un programa que imprima los números decimales del 1 al 100 inclusive. Pero para los múltiplos de tres imprime "Fizz" en lugar del número y para los múltiplos de cinco imprime "Buzz". Para números que son múltiplos de tres y cinco, imprima "FizzBuzz". Los programas deben estar escritos en alguna versión de Python.
Para más detalles, vea 1, 2, Fizz, 4, Buzz
Puntuación
Su puntaje será igual al número de nodos en el árbol de sintaxis abstracta de su código, según lo informado por este programa para Python 3 , o este programa para Python 2 . Para ejecutar los programas, proporcione el nombre de archivo de su código como argumento de línea de comando para el programa. Por ejemplo:
python simple_counter.py fizzbuzz.py
Estos programas se basan en el módulo ast de Python . Si tiene alguna dificultad, hágamelo saber.
Para evitar soluciones triviales, como ejecutar una cadena larga con el programa real o codificar la salida, existen algunas restricciones adicionales:
Ningún token en su código puede tener más de 15 caracteres. Los programas anteriores verifican este requisito por usted. Tenga en cuenta que para facilitar la implementación, los programas anteriores cuentan los comentarios como tokens.
La ejecución / evaluación del código está prohibida.
Si tiene preguntas sobre si algo está permitido, pregúnteme.
Heurística de puntuación
Las siguientes reglas suelen ser suficientes para calcular la puntuación de su programa:
Instrucciones de bloque son 1 Puntos:
if
,for ... in ...
,while
,else
, etc.Estados independientes son 1 punto:
print
en Python 2,break
,pass
, etc.Las variables son 2 puntos.
Literales Single-Token son 1 punto:
2131
,"Hello, world!"
,True
Las funciones son 3 puntos (2 por usar una variable, 1 extra):
print
en Python 3range
, etc.Los operadores son 2 puntos:
+
,*
,%
,and
,not
, etc.=
es 1 puntoAsignación aumentada es 2 puntos:
+=
,|=
, etc.Los paréntesis, sangría, etc. son 0 puntos.
Una línea que contiene una expresión, a diferencia de una asignación o una expresión, es + 1 punto.
Tener código es 1 punto.
Desafío:
El puntaje más bajo gana. ¡Buena suerte!
fuente
Respuestas:
33
Python 2
fuente
46
fuente
repr
lo que recuerdo.3934fuente
Pitón 2, 36
Creo que este es el enfoque más corto que no utiliza grandes números / cadenas.
fuente