昨日の話の続きですが、もうレンズの修理の話ではないので、タイトルを変えました
素直な並びならば、次のような配列です。
これを並び替えて、できるだけ「1」の連なりを増やした~いと考えてみることにしましょう。
D極は、すでに8つも「1」が連なっているので、これ以上は無理です。
そこで、D極の「1」の連なりはそのままにして、C極の「1」の連なりを増やせないものか
例えば、下のように、緑色の部分と橙色の部分を入れ替えても、D極の「1」の連なりは8個のままで、C極の「1」の連なりを増やせそうです。
実際に入れ替えてみました。
この通り、D極の「1」の連なりは8個のままで、C極の「1」の連なりを8個に増やすことができました
次に、D極とC極の「1」の連なりをそのままにして、B極の「1」の連なりを増やせないか。
先ほどと同じように、隣り合う緑色と橙色の部分を入れ替えると、
このように、B極で「1」が4個連なります。
さらに、隣り合う緑と橙を入れ替えてみると、
こうなって、昨日の配列になります。
冒頭の配列では、「1→0」や「0→1」などの切り替わりが26箇所あることに比べ、並べ替え後の配列では15箇所と、半減とは言いませんが6割弱にまで減っています。
なるほどー、という感じですが、果たして、これが最適解であるかどうかは分かりません
16進表示の「0」~「F」の並べ方は、16!=16×15×14×...×3×2×1≒21兆通りありますが、これらを、しらみつぶしに調べていくか。
ひとつの解が求まれば、そのときの極A~Dは入れ替えてもよいので4!=24通り、「0」と「1」を入れ替えても(ほぼ)よいので2通り、上下を反転させてもよいので2通り、計約96通りのバリエーションが存在します。
ということで、21兆通りの全ては調べずとも、約1/96の2,000億通りについて調べればよいことになります。
コンピュータで1通りを調べるのに1秒を要するとして、2,000億秒=6,300年
いやいや、最近のコンピューターの演算速度は速いぞ、ということで1秒で100通りを処理できるとしても63年。
結構、手強いものですねえ
なにか、エレガントに解く方法はないものかな
たぶん・・・
各極とも「1」が8個、「0」が8個だから、どれだけ「1」を連ねても8個が最大。
2つの極(例えばD極とC極)で「1」を8個連ねることができたとする。
残りのB極とA極で4通りの数字を表さないといけないので、D極とC極の「1」の連なりは4つずらしておかないといけない(これ以外の並べ方はあり得ない)。
D極とC極で「00」「01」「10」「11」の4個の連なりがあって、それぞれ均等にB極の「1」を配置しないといけないので、それぞれに2個ずつ。
うまく隣り合わせることができれば、4個の「1」が連なる。
ここまで来たら、同様に考えて、A極の「1」の連なりは、うまくいった場合で2個。
実際に、末尾の表はこれらを満たしているので、最適解なのでしょう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます