前書き
もちろん、シーケンスには多くの課題があるので、別の課題を示します。
キンバリングシーケンス(A007063)は次のとおりです。
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
これは、通常の反復をシャッフルすることにより生成されます。
[1] 2 3 4 5 6 7 8
シーケンスの最初の項は1
です。その後、左側のすべての用語が使用されるまでシーケンスをシャッフルします。シャッフルにはパターンがありますright - left - right - left - ...
。の左側に用語がないため1
、シャッフルはありません。次のものが得られます。
2 [3] 4 5 6 7 8 9
i 番目の反復で、i 番目のアイテムを破棄し、それをシーケンスに入れます。これは2回目の反復なので、2番目の項目は破棄します。シーケンスは次のようになります1, 3
。次の反復では、上記のパターンで現在の反復をシャッフルします。i 番目のアイテムの右側にある最初の未使用アイテムを受け取ります。これはたまたま4
です。これを新しい反復に追加します。
4
次に、i 番目のアイテムの左側にある最初の未使用アイテムを取得します。これがあります2
。これを新しい反復に追加します。
4 2
i 番目のアイテムの左にアイテムが残っていないため、シーケンスの残りを新しい反復に追加します。
4 2 [5] 6 7 8 9 10 11 ...
これは3回目の反復なので、3番目のアイテムを破棄します5
。これは、シーケンスの3番目の項目です。
1, 3, 5
次の反復を取得するには、プロセスを繰り返します。明確でない場合、gifを作成しました。
gifは実際の投稿を書くよりも時間がかかりました
仕事
- 非負の整数nが与えられた場合、シーケンスの最初のn項を出力します
- 機能またはプログラムを提供できます
- これはcode-golfであるため、バイト数が最小の提出が勝ちです!
テストケース:
Input: 4
Output: 1, 3, 5, 4
Input: 8
Output: 1, 3, 5, 4, 10, 7, 15, 8
Input: 15
Output: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28
注:出力のコンマは不要です。たとえば、改行を使用したり、リストを出力したりできます。