Résumé
Implémentez FizzBuzz en Python, avec le moins de jetons possible.
Défi
Écrivez un programme qui imprime les nombres décimaux de 1 à 100 inclus. Mais pour les multiples de trois imprimer "Fizz" au lieu du nombre et pour les multiples de cinq imprimer "Buzz". Pour les nombres qui sont des multiples de trois et de cinq, imprimez «FizzBuzz». Les programmes doivent être écrits dans une version de Python.
Pour plus de détails, voir 1, 2, Fizz, 4, Buzz
Notation
Votre score sera égal au nombre de nœuds dans l'arborescence de syntaxe abstraite de votre code, tel que rapporté par ce programme pour Python 3 , ou ce programme pour Python 2 . Pour exécuter les programmes, fournissez le nom de fichier de votre code comme argument de ligne de commande au programme. Par exemple:
python simple_counter.py fizzbuzz.py
Ces programmes sont basés sur le module ast de Python . Si vous avez des difficultés, faites-le moi savoir.
Pour éviter des solutions triviales, telles que l'exécution d'une longue chaîne avec le programme réel ou le codage en dur de la sortie, il existe des restrictions supplémentaires:
Aucun jeton de votre code ne peut dépasser 15 caractères. Les programmes ci-dessus vérifieront cette exigence pour vous. Notez que pour faciliter la mise en œuvre, les programmes ci-dessus comptent les commentaires comme des jetons.
L'exécution / l'évaluation du code est interdite.
Si vous avez des questions quant à savoir si quelque chose est autorisé, demandez-moi.
Heuristique de notation
Les règles suivantes sont généralement suffisantes pour calculer le score de votre programme:
Déclarations blocs sont 1 points:
if
,for ... in ...
,while
,else
, etc.Déclarations autonomes sont 1 point:
print
en Python 2,break
,pass
, etc.Les variables sont à 2 points
Littéraux jeton unique sont 1 point:
2131
,"Hello, world!"
,True
Les fonctions sont de 3 points (2 pour l'utilisation d'une variable, 1 supplémentaire):
print
en Python 3range
, etc.Les opérateurs sont 2 points:
+
,*
,%
,and
,not
, etc.=
est 1 pointAffectation Augmentée est de 2 points:
+=
,|=
, etc.Les parenthèses, l'indentation, etc. sont à 0 point.
Une ligne contenant une expression, par opposition à une affectation ou une expression, vaut +1 point.
Avoir du code est un point.
Défi:
Le score le plus bas l'emporte. Bonne chance!
la source
Réponses:
33
Python 2
la source
46
la source
repr
autant que je me souvienne.3934la source
Python 2, 36
Je pense que c'est la plus courte des approches qui n'utilisent pas de grands nombres / chaînes.
la source