ポインタシーケンスを作成する

a(n)= a((n-1) –
(a(n-1)))
のすべてのシーケンスであるように、いくつかの有限数よりも。例えば、私たちのシーケンスが

3 2 1 

a(n-1)= 1(n-1)-1 = 1
という次の用語は 2 > a(1)= 2
(この例はゼロインデックスですが、計算を使用するインデックスは常に同じです)。このプロセスを繰り返すと、無限のシーケンスが得られます

3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2

仕事

正の整数のいくつかの初期配列が与えられた場合、その配列で始まるポインタシーケンスを出力します。

出力タイプ

無限の整数リストやシーケンスを索引付けする関数のいずれかを返すことができるプログラムとして関数を書くことを選択した場合、出力は柔軟性があります。フルプログラムを書くことを選択した場合、シーケンスの用語を無限に出力することができます。

開始配列とインデックスの2つの入力を取ることもできます。これを行うことを選択した場合は、そのインデックスでシーケンスの用語を出力するだけでよい。


シーケンスの開始前に索引付けを必要とするシーケンスは決して与えられません。たとえば、次の用語を解決するには
3 の前に用語が必要であるため、 3 は有効な入力ではありません。

This is
so your score will be the number of bytes in your program with a
lower score being better.

テストケース

テストケース are truncated for simplicity

2 1   -> 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 ...
2 3 1 -> 2 3 1 3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 ...
3 3 1 -> 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 ...
4 3 1 -> 4 3 1 3 4 4 3 3 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 ...
ベストアンサー

JavaScript(ES6)、25バイト

a=>f=n=>a[n]||f(--n-f(n))

呼び出されるとシーケンス内の指定されたインデックスに項目を与える関数 f を作成する無名関数。

私が何かを誤解した場合は、私に知らせてください…

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です