요약
가장 적은 토큰으로 Python에서 FizzBuzz를 구현하십시오.
도전
1에서 100까지의 10 진수를 인쇄하는 프로그램을 작성하십시오. 그러나 숫자 대신 3 개의 인쇄“Fizz”의 배수와 5 개의 인쇄“Buzz”의 배수의 경우. 3과 5의 배수 인“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
파이썬 2,break
,pass
, 등변수는 2 점입니다
단일 토큰 리터럴이 1 점이다 :
2131
,"Hello, world!"
,True
함수는 3 점입니다 (변수를 사용하는 경우 2, 1 추가) :
print
Python 3range
등운영자는 2 점이다 :
+
,*
,%
,and
,not
, 등=
1 포인트: 증강 할당은 2 점이다
+=
,|=
등괄호, 들여 쓰기 등은 0 점입니다.
대입 또는 식과 달리 식을 포함하는 선은 + 1 점입니다.
코드를 작성하는 것은 1 점입니다.
도전:
가장 낮은 점수가 이깁니다. 행운을 빕니다!