컴파일러 골프의 세계에 오신 것을 환영합니다. 귀하의 작업은 사양에 따라 FizzBuzz의 변형을 재생하기 위해 다른 프로그램을 생성하는 프로그램을 작성하는 것입니다.
컴파일러
사양에 따라 FizzBuzz 프로그램의 변형을 생성하는 컴파일러를 작성하십시오. 이 변형의 스펙은 정수 / 문자열 쌍의 배열 형식으로 표현됩니다.
- 입력은 귀하의 언어에 편리한 형태 일 수 있습니다. (내 예제는 n : xxxx를 사용하지만 이는 단지 설명을위한 것입니다.)
- 각 정수 입력은 컴파일러 호출 당 한 번만 사용할 수 있습니다.
- 각 쌍의 정수는 적어도 하나의 값을 갖습니다.
- 각 쌍의 문자열은 정확히 4 개의 ASCII 문자로만 구성됩니다.
- 출력은 아래 규칙을 따르는 하나의 완전한 프로그램이어야합니다.
- 텍스트 프로그램 인 경우 출력은 편리한 형태 일 수 있습니다. (따라서 람다 식을 반환하지 않습니다.)
위 규칙을 준수하지 않는 입력에 대해서는 동작이 정의되어 있지 않습니다.
생성 된 FizzBuzz 프로그램
컴파일러가 생성 한 프로그램은 단일 정수 n 을 입력으로 사용합니다. 필요한 경우 숫자를 FizzBuzz 문자열로 대체 하여 1부터 n 까지의 일련의 숫자를 출력 합니다.
- 생성 된 프로그램은 컴파일러와 동일한 언어 여야합니다.
- 입력 n 은 귀하의 언어에 편리한 형태 일 수 있습니다.
- n 은 하나 이상의 값을 갖습니다.
- 컴파일러에 입력 된 정수 중 적어도 하나의 배수 인 숫자는 함께 연결된 정수와 쌍을 이루는 모든 문자열로 바꿔야합니다.
- FizzBuzz 문자열로 대체되지 않는 숫자는 10 진수 ASCII로 출력되어야합니다.
예를 들어;
> GenFizzBuzz 3:Fizz 5:Buzz
> a.out 5
1
2
Fizz
4
Buzz
채점
입력 한 내용은 컴파일러가 생성 한 프로그램의 길이에 따라 컴파일러의 길이에 추가됩니다. 다음 각 매개 변수를 사용하여 컴파일러를 여러 번 실행하고 생성 된 프로그램의 길이와 컴파일러의 길이를 더하여 점수를 찾으십시오.
- 그냥 센다. (입력 없음-생성 된 프로그램은 교체없이 1에서 n 까지 카운트 합니다.)
- 그냥 골프. (1 : 골프-생성 된 프로그램은 "골프"를 n 번 출력 합니다.
- 클래식 FizzBuzz. (3 : 피즈, 5 : 버즈)
(컴파일러는 나열된 것뿐만 아니라 유효한 입력을위한 코드를 생성해야합니다.)