最近PPCGに投稿されたFizzBuzz関連の多くの問題(2つですか?)に直面して、私は自分で考えたくなりました。見よ...
フィズバズライトイヤー
整数を取り、15で割り切れる任意の数、3で割り切れる任意の数、5で割り切れる任意の数nを出力するプログラムまたは関数を記述します。すべての出力の後には改行が続く必要があります。しかし、ひねりがあります!FizzBuzzFizzBuzzni
3回おきに印刷するたびにBuzz、バズライトイヤーは最終的にあなたの通話に注意を払い、プログラムのクラッシュを引き起こします。それから彼は自己紹介します-しかし、彼がクラッシュしたので、彼の言ったことのいくつかはあなたのプログラムの出力と混同されます:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(つまり、またはに追加 Lightyear, Space Ranger, Universe Protection Unit.します-それ以外に表示したものは何でも。先頭のスペースに注意してください)BuzzFizzBuzz
ただし、バズライトイヤーは、彼がそうであるスペースレンジャーであるため、非常に鋭い聴覚を持っているため、印刷FizzBuzzはあなたのBuzz数にカウントされます。
次に、バズは、5で割り切れる別の数値(または、5で割り切れるので15)に到達するまで、その邪悪な出力のすべてからコンピューターを防御します。つまり、もう一度印刷するBuzz(またはFizzBuzz)までは、何も印刷されません。
最終的にその条件に到達すると、バズは出発します。
To infinity and beyond!
出力例
これがために期待される出力ですn = 25。(それは19から16をスキップする方法に注目してください)
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してFizzBuzz)が3に当たります。彼は次のBuzz(また、両方Buzzとを含むFizzBuzz)が印刷されたときに出発します。
彼が出発する数は、次の「バズカウンター」にはカウントされません。代わりに、Buzzesのカウントを0から再度開始する必要があります。たとえば、n = 25(出力例)で実行されているプログラムは、「バズカウンター」が1で終わる必要Buzzがあります。
nバズの到着の1つと彼の出発の1つの間にある場合(つまり、彼はまだそこにいます-あなたは何も印刷していません)、正常な終了が期待されます。したがって、出力の最後の行は彼の紹介になります
標準の抜け穴は禁止されています。
nバズライトイヤーの到着と彼の出発の中間にあるときに予想される動作を明確にできますか?