もともとこの質問で@DJMcMayhemによって発明されたNボナッチ数列は、整数0と1で始まり、前のN数を追加して次の数を生成することによって生成された数列です。特別なN-ボナッチ数列は、0と1以外の数字のペアで始まるN-ボナッチ数列です。XとYという名前になります。Nが既に数列にある用語の数よりも大きい場合は、使用可能なすべてを追加します条項。
たとえば、通常のフィボナッチ数列のNは2(前の2つの項目を取ります)、XとYは0と1、または1と1になります。
あなたのタスク:
入力された整数(A)が次の3つの整数によって生成される特別なNボナッチシーケンスの一部であるかどうかをチェックするプログラムまたは関数を作成します(2番目の入力をN、3番目と4番目をXおよびYとして使用) 。N = 1の特殊なケースを処理するようにしてください。
入力:
4つの非負整数、A、N、X、およびY。
出力:
AがN、X、およびY入力によって生成されたNボナッチ数列の一部であるかどうかを示す真偽値。
テストケース:
Input: Output:
13,2,0,1->truthy
12,3,1,4->falsy
4,5,0,1-->truthy
8,1,8,9-->truthy
9,1,8,9-->truthy
12,5,0,1->falsy [0,1]>[0,1,1]>[0,1,1,2]>[0,1,1,2,4]>[0,1,1,2,4,8]>[0,1,1,2,4,8,16]>etc.
得点:
これはcode-golfであるため、バイト単位の最低スコアが優先されます。
N=1
は、質問でそれを呼び出すことができます。なぜなら、多くの回答(現在のすべての回答を含む)は、厳密に増加するシリーズを前提とする失敗条件を持っているからです。また、負の可能性はX
ありY
ますか?また、既存のすべての回答が無効になる可能性があります。
8,1,8,9
を追加し、ケース処理で値だけでなく非反復値も検出さ9,1,8,9
れるようにする必要があると思います。(ケースを処理する場合は、それも追加する必要があります。)N=1
X
Y
0,0
N==1
そのような奇妙なケースです。