摘要
用最少的令牌在Python中实现FizzBuzz。
挑战
编写一个打印十进制数字(从1到100)的程序。但是,对于三倍打印“ Fizz”而不是数字,对于五倍打印“ Buzz”。对于三和五的倍数的数字,请打印“ FizzBuzz”。程序必须使用某些版本的Python编写。
有关更多详细信息,请参见1,2,Fizz,4,Buzz
计分
您的分数将等于此程序针对Python 3或该程序针对Python 2报告的代码抽象语法树中的节点数。要运行程序,请提供代码的文件名作为程序的命令行参数。例如:
python simple_counter.py fizzbuzz.py
这些程序基于Python的ast模块。如果您有任何困难,请告诉我。
为避免琐碎的解决方案,例如用实际程序执行长字符串或对输出进行硬编码,还有一些其他限制:
您的代码中的令牌不得超过15个字符。以上程序将为您检查此要求。注意,为了易于实施,上述程序将注释计为标记。
代码执行/评估被禁止。
如果您对是否允许某些物品有疑问,请问我。
计分启发法
以下规则通常足以计算程序的分数:
语句块是1分:
if
,for ... in ...
,while
,else
,等。独立语句是1点:
print
在Python 2,break
,pass
等。变量是2分
单令牌面值为1点:
2131
,"Hello, world!"
,True
函数是3点(使用变量需要2点,额外需要1点):
print
在Python 3中range
,等等。运营商有2点:
+
,*
,%
,and
,not
,等。=
是1分增量赋值为二点:
+=
,|=
,等。括号,缩进等为0点。
与赋值或表达式相反,包含表达式的行为+ 1点。
完全有代码是1点。
挑战:
最低分获胜。祝好运!
1
我喜欢这种风格。您必须使用简单的程序,而不仅仅是简短的程序。
—
硕果累累
@MartinEnder之所以这样做,是因为atomic-code-golf的标签文本显示“ Atomic code golf是由程序的令牌数来计分的”,虽然这可能只是一个漂亮的词,但与此并不相同。小数量。
—
isaacg