Selamat datang di dunia golf kompiler. Tugas Anda adalah menulis sebuah program yang menghasilkan program lain untuk memainkan varian FizzBuzz pada spec.
Kompiler Anda
Tulis kompiler yang menghasilkan varian dari program FizzBuzz untuk spesifikasinya. Spesifikasi varian ini dinyatakan dalam bentuk array bilangan bulat / string.
- Masukan mungkin dalam bentuk apa pun yang sesuai dengan bahasa Anda. (Contoh saya menggunakan n: xxxx, tetapi ini hanya untuk tujuan ilustrasi.)
- Setiap input integer hanya dapat digunakan satu kali per permintaan kompiler Anda.
- Bilangan bulat dari setiap pasangan akan memiliki nilai setidaknya satu.
- String dari setiap pasangan hanya akan dibuat dari empat huruf ASCII.
- Output harus berupa program lengkap tunggal yang sesuai dengan aturan di bawah ini.
- Outputnya bisa dalam bentuk apa pun, asalkan merupakan program tekstual. (Jadi tidak ada ekspresi lambda yang kembali.)
Perilaku tidak ditentukan untuk input yang tidak sesuai dengan aturan di atas.
Program FizzBuzz yang Anda hasilkan
Program yang dihasilkan oleh kompiler Anda akan mengambil bilangan bulat tunggal, n , sebagai input. Ini akan menampilkan urutan angka mulai dari satu hingga dan termasuk n , mengganti angka dengan string FizzBuzz saat diperlukan.
- Program yang dihasilkan harus dalam bahasa yang sama dengan kompiler.
- Input n mungkin dalam bentuk apa pun sesuai dengan bahasa Anda.
- n akan memiliki nilai setidaknya satu.
- Angka yang merupakan kelipatan dari setidaknya satu dari input bilangan bulat ke kompiler harus diganti oleh semua string yang dipasangkan dengan bilangan bulat yang digabungkan.
- Nomor yang tidak akan digantikan oleh string FizzBuzz harus berupa output dalam ASCII desimal.
Sebagai contoh;
> GenFizzBuzz 3:Fizz 5:Buzz
> a.out 5
1
2
Fizz
4
Buzz
Mencetak gol
Entri Anda akan dinilai berdasarkan panjang program yang dihasilkan kompiler Anda ditambahkan ke panjang kompiler Anda. Jalankan kompiler Anda berkali-kali dengan masing-masing parameter berikut dan tambahkan panjang program yang dihasilkan bersama dengan panjang kompiler untuk menemukan skor Anda.
- Hitung saja. (Tanpa input - Program yang dihasilkan akan menghitung 1 hingga n tanpa penggantian.)
- Hanya Golf. (1: Golf - Program yang dihasilkan akan menampilkan "Golf" n kali.)
- FizzBuzz Klasik. (3: Fizz, 5: Buzz)
(Perhatikan bahwa kompiler Anda diperlukan untuk menghasilkan kode untuk input apa pun yang valid, bukan hanya yang terdaftar ini.)