FizzBuzzはとても簡単です。この課題では、FizzBuzz文字列の長さを指定し、その文字列を生成した正の整数を指定する必要があります。
説明
これを分解するためにn、次のアルゴリズムによってFizzBuzz文字列が生成されます。
空の文字列で開始し、すべてi=1..n(包括的)に対して:
- 場合は
iで割り切れる3とによって5、APPENDFizzBuzz文字列に。 - if
iが3appendで割り切れるだけFizzです。 - if
iが5appendで割り切れるだけBuzzです。 iどちらでも割り切れない場合は、の10進表現を追加しますi。
たとえばFizzBuzz(15)、次のとおりです。
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
あなたが与えられLength(FizzBuzz(n))、決定する必要がありnます。入力が正であり、常にFizzBuzz文字列の長さになると仮定することができます。
ルール
ソリューションは、完全にプログラムまたは標準的に受け入れ可能な言語の関数定義である場合があります。プログラム/関数は、引数を取り、標準的に受け入れられている方法で回答を返す場合があります。標準的な抜け穴は禁止されています。
入力は正で有効(FizzBuzz文字列の長さを表す)であり、言語でネイティブに表現できる最大の整数より小さいと仮定できます。
これはコードゴルフであるため、最短バイト数が勝ちます。
例
ここにいくつかの例があります
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
編集
最後のテストケースを修正しました。@SteadyBoxに感謝します。