Sumário
Implemente o FizzBuzz em Python, com o menor número possível de tokens.
Desafio
Escreva um programa que imprima os números decimais de 1 a 100 inclusive. Mas, para múltiplos de três, imprima "Fizz" em vez do número e para os múltiplos de cinco, imprima "Buzz". Para números múltiplos de três e cinco, imprima “FizzBuzz”. Os programas devem ser escritos em alguma versão do Python.
Para mais detalhes, consulte 1, 2, Fizz, 4, Buzz
Pontuação
Sua pontuação será igual ao número de nós na árvore de sintaxe abstrata do seu código, conforme relatado por este programa para o Python 3 ou por este programa para o Python 2 . Para executar os programas, forneça o nome do arquivo do seu código como argumento de linha de comando para o programa. Por exemplo:
python simple_counter.py fizzbuzz.py
Esses programas são baseados no módulo ast do Python . Se você tiver alguma dificuldade, me avise.
Para evitar soluções triviais, como executar uma cadeia longa com o programa real ou codificar a saída, existem algumas restrições adicionais:
Nenhum token no seu código pode ter mais de 15 caracteres. Os programas acima verificarão esse requisito para você. Observe que, para facilitar a implementação, os programas acima contam comentários como tokens.
A execução / avaliação do código é proibida.
Se você tiver dúvidas sobre se algo é permitido, pergunte-me.
Heurísticas de pontuação
As seguintes regras geralmente são suficientes para calcular a pontuação do seu programa:
Instruções de bloco são 1 pontos:
if
,for ... in ...
,while
,else
, etc.Declarações são independentes um ponto:
print
em Python 2,break
,pass
, etc.Variáveis são 2 pontos
Literais Single-simbólicos são 1 ponto:
2131
,"Hello, world!"
,True
Funções são 3 pontos (2 para usar uma variável, 1 extra):
print
no Python 3range
, etc.Os operadores são 2 pontos:
+
,*
,%
,and
,not
, etc.=
é 1 pontoAtribuição ampliada é de 2 pontos:
+=
,|=
, etc.Parênteses, recuo, etc. são 0 pontos.
Uma linha que contém uma expressão, em oposição a uma atribuição ou expressão, é + 1 ponto.
Ter código é 1 ponto.
Desafio:
A pontuação mais baixa vence. Boa sorte!