3,5,6,9,10,12 or 0011,0101,0110,1001,1010,1100
それぞれ 2 ビットが設定された辞書編集上の整数があるとします。
3
私が望むのは、言うことと5
できるだけ少ない操作を使用することの間の距離(実際の順列を行わずに、それらの間の辞書編集順列の数)を見つけることです。
距離表は以下の通り
3->5 = 1 or 0011->0101 = 0001
3->6 = 2 or 0011->0110 = 0010
3->9 = 3 or 0011->1001 = 0011
3->10 = 4 or 0011->1010 = 0100
3->12 = 5 or 0011->1100 = 0101
したがって、関数 f(3,5) は 1 を返します。
この関数は、常に同じハミング重み (同じ量のセット ビット) の引数を取ります。
配列は使用しないでください。
どんなアイデアでも素晴らしいでしょう。
編集
言及するのを忘れていましたが、設定されたビット サイズ (ハミングの重み)base
について、最初の引数として常に最初の辞書編集順列 ( ) を使用します。
例えば
hamming weight 1 base = 1
hamming weight 2 base = 3
hamming weight 3 base = 7
...
編集 2
ソリューションは、ハミングの重みに対して機能するはずです。申し訳ありませんが、具体的ではありませんでした。