Introducción
En este desafío, trataremos con un cierto orden de los enteros positivos. El pedido es así:
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
Primero enumeramos todos los enteros impares mayores que 1 en orden ascendente. Luego enumeramos dos veces enteros impares mayores que 1, luego 4 veces, luego 8 veces, y así sucesivamente: para todos los k , enumeramos 2 k veces los enteros impares mayores que 1 en orden ascendente. Finalmente, enumeramos las potencias de dos en orden descendente , terminando en 1. Cada entero positivo ocurre en esta "lista" exactamente una vez.
Más explícitamente, considere dos enteros positivos distintos A = n · 2 p y B = m · 2 q , donde n, m ≥ 1 son impares, y p, q ≥ 0 . Entonces A viene antes que B en el orden, si se cumple una de las siguientes condiciones:
- n> 1 , m> 1 y p <q
- 1 <n <m y p = q
- n> m = 1
- n = m = 1 y p> q
Este orden aparece en el sorprendente resultado matemático conocido como el teorema de Sharkovskii , que se refiere a los puntos periódicos de los sistemas dinámicos. No entraré en detalles aquí.
La tarea
Su tarea en este desafío es calcular el orden anterior. Sus entradas son dos enteros positivos A y B , que pueden ser iguales. Su salida es un valor verdadero si A viene antes que B en el orden, y un valor falso de lo contrario. Si A = B , su salida debería ser veraz. Puede tomar A y B en cualquier orden, siempre que sea consistente.
No tiene que preocuparse por el desbordamiento de enteros, pero su algoritmo debería funcionar teóricamente para entradas arbitrariamente grandes.
Casos de prueba
Instancias de verdad
3 11
9 6
48 112
49 112
158 158
36 24
14 28
144 32
32 32
32 8
3 1
1 1
Instancias falsas
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)?