負でない整数は常に同じ2つの*隣人を持っていることにうんざりしているので、少し混同することにします。しかし、彼らも怠け者であり、元の位置にできるだけ近くに滞在したい。
それらは次のアルゴリズムを思い付きます:
- 最初の要素は0です。
- 要素がまだ配列には存在しないとの隣接していない最小の数であるの要素。
これにより、次の無限シーケンスが生成されます。
0,2,4,1,3,5,7,9,6,8,10,12,14,11,13,15,17,19,16,18,20,22,24,21,23,25,27,29,26,28 ...
0
は最初の要素です。1
は、まだシーケンスに含まれていない最小の数値ですが、の近傍です0
。次に小さい数は2
なので、これはシーケンスの2番目の要素です。今残っている数である1,3,4,5,6,...
が、両方として1
と3
の隣人であり2
、4
シーケンスの第三のメンバーです。の1
隣人ではないので、4
最終的に4番目の要素としての位置を占めることができます。
タスク
上記のシーケンスを生成する関数またはプログラムをできる限り少ないバイトで記述します。
してもいいです
- シーケンスを無限に出力し、
- 入力を取得し、シーケンスの要素を返す、または
- 入力を受け取り、シーケンスの最初の要素を返します。
後者の2つのオプションのいずれかを選択する場合、ゼロまたは1インデックスのどちらでも問題ありません。
上記のアルゴリズムに従う必要はありません。同じシーケンスを生成する方法であれば問題ありません。
コードゴルフにインスパイアされた最高の順列。これはA277618であることがわかります。
*ゼロには文字通り隣人が1人しかいないので、気にしません。