はじめに(無視してもよい)
すべての正の数を規則正しい順序(1、2、3、...)で並べるのは少し退屈ですよね?そのため、すべての正の数の順列(再編成)に関する一連の課題があります。これは、このシリーズの2番目の課題です。最初の挑戦はここで見つけることができます。
この課題では、グレーコードを使用して自然数を再調整します。グレイコード、または「反射バイナリコード」は、2つの連続する値が1ビットだけ異なるような方法でのバイナリエンコーディングです。このエンコードの実用的な用途は、ロータリーエンコーダーで使用することです。したがって、「Turn My Way」を参照します。
このエンコードはある程度の自由度があることに注意してください。例えば、バイナリ1100以下の4つの可能な次のコードがある:1101 1110 1000 0100 Iが定義する理由である(nは)バイナリエンコーディングが異なるだけ一文字こと最小、以前に使用されていない値として。このシーケンスはA163252に対応します。
これは「純粋なシーケンス」のチャレンジであるため、タスクは入力として特定のnに対してa (n )を出力です。ここでa (n )はA163252です。
仕事
整数入力与えられると、整数形式(バイナリ形式ではない)で出力します。
は、とが2進数で書かれた場合に1ビットだけ異なるように、シーケンスの初期に発生しない最小の正の整数として定義されます。
注:ここでは、1ベースのインデックス付けが想定されています。0ベースのインデックスを使用できます。そのためなど。これを使用することを選択した場合は、回答にこれを記載してください。
テストケース
Input | Output
--------------
1 | 1
5 | 4
20 | 18
50 | 48
123 | 121
1234 | 1333
3000 | 3030
9999 | 9997
ルール
- 入出力は整数です(プログラムは少なくとも1〜32767の範囲の入出力をサポートする必要があります)
- 無効な入力(0、フロート、文字列、負の値など)は、予期しない出力、エラー、または(未)定義された動作につながる可能性があります。ではA163252、(0 )この挑戦のために0として定義され、我々はこれを無視します。
- デフォルトのI / Oルールが適用されます。
- デフォルトの抜け穴は禁止されています。
- これはcode-golfであるため、バイト単位の最短回答が優先されます
最後のメモ
次の関連する(ただし等しくない)PP&CGの質問を参照してください。