Introdução
Neste desafio, estaremos lidando com uma certa ordenação dos números inteiros positivos. A ordem é assim:
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
Primeiro, listamos todos os números inteiros ímpares maiores que 1 em ordem crescente. Em seguida, listamos duas vezes números inteiros ímpares maiores que 1, depois 4 vezes, depois 8 vezes e assim por diante: para todo k , listamos 2 k vezes os números inteiros ímpares maiores que 1 em ordem crescente. Finalmente, listamos os poderes de dois em ordem decrescente , terminando em 1. Todo número inteiro positivo ocorre nesta "lista" exatamente uma vez.
Mais explicitamente, considere dois inteiros positivos distintos A = n · 2 p e B = m · 2 q , em que n, m ≥ 1 são ímpares ep, q ≥ 0 . Em seguida, A vem antes de B na ordem, se uma das seguintes condições ocorrer:
- n> 1 , m> 1 e p <q
- 1 <n <m e p = q
- n> m = 1
- n = m = 1 e p> Q
Essa ordem aparece no surpreendente resultado matemático conhecido como teorema de Sharkovskii , que diz respeito aos pontos periódicos dos sistemas dinâmicos. Não vou entrar em detalhes aqui.
A tarefa
Sua tarefa neste desafio é calcular a ordem acima. Suas entradas são dois números inteiros positivos A e B , que podem ser iguais. Sua saída é um valor verdadeiro se A for anterior a B na ordem e um valor falso caso contrário. Se A = B , sua saída deve ser verdadeira. Você pode pegar A e B em qualquer ordem, desde que seja consistente.
Você não precisa se preocupar com excesso de números inteiros, mas seu algoritmo deve teoricamente funcionar para entradas arbitrariamente grandes.
Casos de teste
Instâncias verdadeiras
3 11
9 6
48 112
49 112
158 158
36 24
14 28
144 32
32 32
32 8
3 1
1 1
Instâncias de falsidade
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)
?