バックグラウンド
1-2-3-Tribonacciシーケンス
標準の反復式を次の式で置き換えることにより、フィボナッチ数列を作成できることを少し想像してください。
基本的に、最後の2つを合計して次を取得する代わりに、最後の3つを合計します。これが1-2-3-Tribonacciシーケンスの基礎です。
ブラウンの基準
ブラウンの基準では、次の条件があれば、シーケンスのメンバーの合計として整数値を表すことができます。
n
1より大きいすべての場合
これがチャレンジにとって何を意味するか
次の初期条件によって形成される1-2-3-Tribonacciシーケンスのメンバーの合計として、正の整数を記述できます。
これは、このシーケンスのすべての値について、用語間の比率が2より大きくなることはありません(比率は約1.839で平均化されます)。
この数値表現システムでの書き方
リトルエンディアン表現を使用するとします。シーケンスのメンバーを次のように並べます。
1 2 3 6 11 20 37 68
次に、番号を表して(テストでは63
)、指定された1-2-3-Tribonacciの値を求めます(合計値は63 (最初に最大値を使用)!)。数値が合計の一部である場合、その下に1を入れ、そうでない場合は0を入れます。
1 2 3 6 11 20 37 68
0 0 0 1 0 1 1 0
任意の整数に対してこれを行うことができます-最初に特定の入力以下の最大値を使用することを確認してください!
定義(最終的に)
n
1からあなたの言語の最大値の間の(標準ベースで書かれた)正の整数入力が与えられた場合、以下を実行するプログラムまたは関数を作成します。
- 値を定義済みの1-2-3-Tribonacciの数値表現に変換します。
- このバイナリのような表現を使用し、それがバイナリであるかのように読み取ります。つまり、数字は同じままですが、意味は変わります。
- この2進数を取得し、元の数値の基数に変換します。
- この新しい番号を出力または返します。
ただし、出力が有効である限り、これらの手順に従う必要はありません。短い(および数学的に同等の)数式を魔法のように見つけた場合は、自由に使用してください。
例
関数をf
定義で記述された関数とし、[]
(リトルエンディアンとして、それは重要ではありませんが)実行されたステップを表します(このプロセスに従う必要はありません、これは記述されたプロセスです):
>>> f(1)
[1]
[1]
[1]
1
>>> f(5)
[5]
[0, 1, 1]
[6]
6
>>> f(63)
[63]
[0, 0, 0, 1, 0, 1, 1]
[104]
104