FizzBuzz rất đơn giản, đặt cược bạn có thể làm điều đó ngược lại. Trong thử thách này, bạn sẽ được cung cấp độ dài của chuỗi FizzBuzz và phải đưa ra số nguyên dương tạo ra chuỗi đó.
Sự miêu tả
Để phá vỡ điều này, một chuỗi FizzBuzz cho nđược tạo bởi thuật toán sau.
Bắt đầu với một chuỗi rỗng và, cho mọi i=1..n(bao gồm):
- Nếu
ichia hết cho3và theo5, nốiFizzBuzzvào chuỗi. - Nếu
ichỉ là chia hết bằng cách3chắp thêmFizz. - Nếu
ichỉ là chia hết bằng cách5chắp thêmBuzz. - Nếu
ichia hết cho cả hai, nối thêm biểu diễn thập phân củai.
Vì vậy, ví dụ như FizzBuzz(15)sau:
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
Bạn sẽ được đưa ra Length(FizzBuzz(n))và phải xác định n. Bạn có thể cho rằng đầu vào là dương và luôn luôn là độ dài của một số chuỗi FizzBuzz.
Quy tắc
Giải pháp của bạn có thể là một chương trình hoàn chỉnh hoặc một định nghĩa chức năng trong bất kỳ ngôn ngữ tiêu chuẩn nào được chấp nhận. Chương trình / chức năng của bạn có thể đưa ra các đối số và trả về các câu trả lời theo bất kỳ cách nào được chấp nhận tiêu chuẩn . Sơ hở tiêu chuẩn bị cấm.
Bạn có thể giả sử rằng đầu vào là dương và hợp lệ (mô tả độ dài của một số chuỗi FizzBuzz) và nhỏ hơn số nguyên lớn nhất có thể biểu thị nguyên gốc trong ngôn ngữ của bạn.
Đây là mã golf, vì vậy chiến thắng đếm byte ngắn nhất.
Ví dụ
Dưới đây là một số trường hợp ví dụ
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
Chỉnh sửa
Đã sửa trường hợp kiểm tra lần cuối. Cảm ơn @SteadyBox.