На хвилі багатьох (двох?) Проблем, пов’язаних з FizzBuzz, розміщених нещодавно на PPCG, я спокусився придумати свої. Ось ...
Fizz Buzz Lightyear
Напишіть програму або функцію, яка займає ціле число, nі роздруковує FizzBuzzбудь-яке число, яке ділиться на 15, Fizzдля будь-якого числа, що ділиться на 3, і Buzzдля будь-якого числа, що ділиться на 5, до (включаючи) n. Вихідні дані для всіх iповинні супроводжуватися новим рядком. Але є поворот!
Кожен третій раз, коли ви друкуєте Buzz, Buzz Lightyear, нарешті, прислухається до вашого дзвінка і завершує роботу в програмі. Потім він представляє себе, але, оскільки він приземлився, частина того, що він сказав, змішується з результатами вашої програми:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(Тобто, тільки Append Lightyear, Space Ranger, Universe Protection Unit.до Buzzабо FizzBuzz- то, що ви б в іншому випадку відображається Зверніть увагу на провідне місце.)
Однак у Buzz Lightyear, оскільки він є космічним рейнджером, дуже гострий слух, і тому друк FizzBuzzбуде рахуватися з вашим Buzzрахунком .
Потім Buzz зависає, щоб захистити ваш комп’ютер від усього цього злого виходу, поки ви не потрапите на інше число, яке ділиться на 5 (або 15, оскільки їх також ділимо на 5). Це означає, поки вам не доведеться знову друкувати Buzz(або FizzBuzz), ви нічого не друкуєте.
Коли ви нарешті досягнете такої умови, Buzz відходить:
To infinity and beyond!
Приклад Вихід
Це очікуваний вихід для n = 25: (зауважте, як він пропускає з 16 по 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
Правила
Необов'язковий затримка нового рядка є прийнятною.
Це код гольфу; як такий, виграє найкоротший код у байтах.
Припустимо, що дано nдійсне і більше або дорівнює 15 (це коли виклик вперше відхиляється від стандартного fizzbuzz)
Buzz вітає вас, коли "Лічильник Buzz" (який нараховує і те, Buzzі FizzBuzz) потрапляє на 3; він відходить, коли друкується наступне Buzz(включаючи, знову ж, і те, Buzzі інше FizzBuzz).
Кількість, в якій він відправляється, не зараховується до наступного "лічильника Buzz"; замість цього слід Buzzзнову починати рахувати es з 0. Наприклад, програма, запущена з n = 25(наприклад, вихід), повинна закінчуватися "лічильником Buzz" 1, оскільки саме стільки разів Buzzбуло надруковано за останній раз, коли він вийшов.
Якщо ви nпотрапите між одним із приїздів Базза та одним з виїздів (тобто він все ще є - ви нічого не друкуєте), очікується витончене припинення. Тому останнім рядком випуску було б його введення
Стандартні лазівки заборонені.
nпотрапляє між приїздом Buzz Lightyear і його від'їздом?