Witamy w świecie kompilatora golfa. Twoim zadaniem jest napisanie programu, który generuje inny program do odtwarzania określonego wariantu FizzBuzz.
Twój kompilator
Napisz kompilator, który generuje warianty programu FizzBuzz do specyfikacji. Specyfikacja tego wariantu jest wyrażona w postaci tablicy liczb całkowitych / ciągów znaków.
- Dane wejściowe mogą mieć dowolną formę dogodną dla twojego języka. (Moje przykłady używają n: xxxx, ale jest to wyłącznie w celach ilustracyjnych.)
- Każde wejście całkowite może być użyte tylko raz na wywołanie twojego kompilatora.
- Liczba całkowita każdej pary będzie miała wartość co najmniej jednej.
- Ciąg każdej pary będzie składał się tylko z dokładnie czterech liter ASCII.
- Dane wyjściowe muszą być pojedynczym kompletnym programem, który jest zgodny z poniższymi zasadami.
- Wynik może być w dowolnej dogodnej formie, o ile jest to program tekstowy. (Więc nie ma wyrażeń lambda.)
Zachowanie jest niezdefiniowane dla danych wejściowych niezgodnych z powyższymi zasadami.
Wygenerowany program FizzBuzz
Program wygenerowany przez kompilator pobierze jedną liczbę całkowitą n jako dane wejściowe. Wyświetli sekwencję liczb od jednego do n włącznie , w razie potrzeby zamieniając liczby ciągami FizzBuzz.
- Wygenerowany program musi być w tym samym języku co kompilator.
- Wpis n może mieć dowolną formę dogodną dla twojego języka.
- n będzie miało wartość co najmniej jednego.
- Liczba będąca wielokrotnością co najmniej jednej liczby całkowitej wprowadzonej do kompilatora musi zostać zastąpiona przez wszystkie ciągi sparowane z tymi liczbami całkowitymi połączonymi ze sobą.
- Liczba, która nie ma być zastępowana ciągiem FizzBuzz, musi być wyprowadzana w postaci dziesiętnej ASCII.
Na przykład;
> GenFizzBuzz 3:Fizz 5:Buzz
> a.out 5
1
2
Fizz
4
Buzz
Punktacja
Twój wpis będzie oceniany na podstawie długości programów generowanych przez kompilator dodanych do długości twojego kompilatora. Uruchom kompilator wiele razy z każdym z poniższych parametrów i dodaj długości wygenerowanych programów wraz z długością kompilatora, aby znaleźć swój wynik.
- Po prostu policz. (Brak danych wejściowych - wygenerowany program będzie liczyć od 1 do n bez zamiany).
- Po prostu golf. (1: Golf - wygenerowany program wyświetli „Golf” n razy.)
- Klasyczny FizzBuzz. (3: Fizz, 5: Buzz)
(Pamiętaj, że Twój kompilator jest wymagany do generowania kodu dla dowolnego prawidłowego wejścia, nie tylko tych wymienionych).