Trước nhiều thách thức liên quan đến FizzBuzz (hai?) Được đăng gần đây trên PPCG, tôi đã cố gắng tự mình nghĩ ra. Hãy chứng kiến...
Fizz Buzz Lightyear
Viết chương trình hoặc hàm lấy một số nguyên nvà in ra FizzBuzzcho bất kỳ số nào chia hết cho 15, Fizzcho bất kỳ số nào chia hết cho 3 và Buzzcho bất kỳ số nào chia hết cho 5, tối đa (và bao gồm) n. Đầu ra cho tất cả iphải được theo sau bởi một dòng mới. Nhưng có một thay đổi!
Đối với mỗi lần thứ ba bạn in Buzz, Buzz Lightyear cuối cùng cũng thực hiện cuộc gọi của bạn và gặp sự cố trong chương trình của bạn. Sau đó anh ta tự giới thiệu - nhưng kể từ khi anh ta hạ cánh, một số điều anh ta nói bị lẫn lộn với đầu ra của chương trình:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(nghĩa là chỉ thêm Lightyear, Space Ranger, Universe Protection Unit.vào Buzzhoặc FizzBuzz- bất cứ thứ gì bạn đã hiển thị theo cách khác. Lưu ý không gian hàng đầu)
Tuy nhiên, Buzz Lightyear, trở thành Space Ranger, anh ta có thính giác rất nhạy bén, và vì vậy việc in ấn FizzBuzzsẽ được tính vào Buzzsố lượng của bạn .
Sau đó, Buzz quanh quẩn để bảo vệ máy tính của bạn khỏi tất cả đầu ra xấu xa đó, cho đến khi bạn đạt được một số khác chia hết cho 5 (hoặc 15, vì chúng cũng chia hết cho 5). Điều đó có nghĩa là cho đến khi bạn phải in Buzz(hoặc FizzBuzz) một lần nữa, bạn hoàn toàn không in bất cứ thứ gì.
Khi bạn cuối cùng đạt được điều kiện đó, Buzz khởi hành:
To infinity and beyond!
Ví dụ đầu ra
Đây là đầu ra dự kiến cho n = 25: (chú ý cách nó bỏ qua 16 đến 19)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
To infinity and beyond!
Fizz
22
23
Fizz
Buzz
Quy tắc
Dòng mới tùy chọn là chấp nhận được.
Đây là mã golf; như vậy, mã ngắn nhất, tính bằng byte, sẽ thắng.
Giả sử được đưa ra nlà hợp lệ và lớn hơn hoặc bằng 15 (đó là khi thử thách lần đầu tiên lệch khỏi fizzbuzz tiêu chuẩn)
Buzz chào đón bạn khi "Bộ đếm Buzz" (tính cả hai Buzzvà FizzBuzz) chạm 3; anh ta khởi hành khi bản tiếp theo Buzz(bao gồm, một lần nữa, cả hai Buzzvà FizzBuzz) được in.
Số mà anh ta khởi hành không được tính vào "bộ đếm Buzz" tiếp theo; thay vào đó, bạn nên bắt đầu đếm lại Buzzes từ 0. Ví dụ, một chương trình chạy với n = 25(đầu ra ví dụ) sẽ kết thúc bằng "bộ đếm Buzz" là 1, vì đó là số lần Buzzđược in kể từ lần cuối cùng anh ấy khởi hành.
Trong trường hợp nrơi vào giữa một trong những lần đến của Buzz và một trong những lần khởi hành của anh ấy (tức là anh ấy vẫn ở đó - bạn không in bất cứ điều gì), việc chấm dứt duyên dáng được mong đợi. Do đó, dòng đầu ra cuối cùng sẽ là phần giới thiệu của anh ấy
Sơ hở tiêu chuẩn bị cấm.
nrơi vào giữa sự xuất hiện của Buzz Lightyear và sự ra đi của anh ấy không?