前書き
この課題では、正の整数の特定の順序付けを扱います。順序は次のようになります。
3, 5, 7, 9, 11, ...
2*3, 2*5, 2*7, 2*9, 2*11, ...
4*3, 4*5, 4*7, 4*9, 4*11, ...
8*3, 8*5, 8*7, 8*9, 8*11, ...
16*3, 16*5, 16*7, 16*9, 16*11, ...
...
... 64, 32, 16, 8, 4, 2, 1
最初に、1より大きいすべての奇数整数を昇順でリストします。次に、1より大きい2倍の奇数の整数をリストし、4倍、8倍、というように、すべてのkについて、1より大きい奇数の整数の2 k倍を昇順でリストします。最後に、1で終わる降順で2のべき乗をリストします。すべての正の整数は、この「リスト」に1回だけ出現します。
より明確に、2つの異なる正の整数A = n・2 pおよびB = m・2 qを検討します。ここで、n、m≥1は奇数で、p、q≥0です。次に、次の条件のいずれかが当てはまる場合、順序付けでAがBの前に来ます。
- n> 1、m> 1およびp <q
- 1 <n <mおよびp = q
- n> m = 1
- n = m = 1およびp> q
この順序付けは、シャルコフスキーの定理として知られる驚くべき数学的結果に現れます。これは、力学系の周期的な点に関するものです。ここでは詳細を説明しません。
タスク
この課題におけるあなたの仕事は、上記の順序を計算することです。入力は2つの正の整数AとBであり、等しい場合があります。順序でAがBの前にある場合、出力は真実の値であり、そうでない場合、偽の値です。場合はA = B、あなたの出力はtruthyでなければなりません。一貫している限り、AとBはどちらの順序でも取ることができます。
整数のオーバーフローを心配する必要はありませんが、アルゴリズムは任意の大きな入力に対して理論的に機能するはずです。
テストケース
真実のインスタンス
3 11
9 6
48 112
49 112
158 158
36 24
14 28
144 32
32 32
32 8
3 1
1 1
偽のインスタンス
1 2
1 5
11 5
20 25
2 8
256 255
256 257
72 52
2176 1216
2176 2496
a&1|~b&1&f(a/2,b/2)
動作しますか?