Chào mừng đến với thế giới của trình biên dịch golf. Nhiệm vụ của bạn là viết một chương trình tạo ra một chương trình khác để chơi một biến thể của FizzBuzz trên spec.
Trình biên dịch của bạn
Viết một trình biên dịch tạo các biến thể của chương trình FizzBuzz để spec. Thông số kỹ thuật của biến thể này được thể hiện dưới dạng một mảng các cặp số nguyên / chuỗi.
- Đầu vào có thể ở bất kỳ dạng nào thuận tiện với ngôn ngữ của bạn. (Ví dụ của tôi sử dụng n: xxxx, nhưng đây chỉ nhằm mục đích minh họa.)
- Mỗi đầu vào số nguyên chỉ có thể được sử dụng một lần cho mỗi lần gọi trình biên dịch của bạn.
- Số nguyên của mỗi cặp sẽ có giá trị ít nhất là một.
- Chuỗi của mỗi cặp sẽ chỉ được tạo bằng chính xác bốn chữ cái ASCII.
- Đầu ra phải là một chương trình hoàn chỉnh duy nhất tuân thủ các quy tắc dưới đây.
- Đầu ra có thể ở bất kỳ dạng thuận tiện nào, miễn là nó là một chương trình văn bản. (Vì vậy, không có biểu thức lambda trở lại.)
Hành vi không được xác định cho các đầu vào không tuân thủ các quy tắc trên.
Chương trình FizzBuzz được tạo của bạn
Chương trình được tạo bởi trình biên dịch của bạn sẽ lấy một số nguyên duy nhất, n , làm đầu vào. Nó sẽ xuất ra một chuỗi các số bắt đầu từ một đến và bao gồm n , thay thế các số bằng chuỗi FizzBuzz khi được yêu cầu.
- Chương trình được tạo phải cùng ngôn ngữ với trình biên dịch.
- Đầu vào n có thể ở bất kỳ dạng nào thuận tiện với ngôn ngữ của bạn.
- n sẽ có giá trị ít nhất là một.
- Một số là bội số của ít nhất một trong các số nguyên đầu vào của trình biên dịch phải được thay thế bằng tất cả các chuỗi được ghép nối với các số nguyên đó được nối với nhau.
- Một số không được thay thế bằng chuỗi FizzBuzz phải được xuất ra dưới dạng thập phân ASCII.
Ví dụ;
> GenFizzBuzz 3:Fizz 5:Buzz
> a.out 5
1
2
Fizz
4
Buzz
Chấm điểm
Mục nhập của bạn sẽ được tính theo độ dài của các chương trình mà trình biên dịch của bạn tạo được thêm vào độ dài của trình biên dịch. Chạy trình biên dịch của bạn nhiều lần với mỗi tham số sau và thêm độ dài của các chương trình được tạo cùng với độ dài của trình biên dịch để tìm điểm của bạn.
- Chỉ cần đếm. (Không có đầu vào - Chương trình được tạo sẽ đếm từ 1 đến n mà không cần thay thế.)
- Chỉ cần Golf. (1: Golf - Chương trình được tạo sẽ tạo ra "Golf" n lần.)
- FizzBuzz cổ điển. (3: Fizz, 5: Buzz)
(Lưu ý rằng trình biên dịch của bạn được yêu cầu để tạo mã cho bất kỳ đầu vào hợp lệ nào, không chỉ những thứ được liệt kê.)