introduzione
In questa sfida, ci occuperemo di un certo ordinamento degli interi positivi. L'ordinamento va così:
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
Elenchiamo prima tutti gli interi dispari maggiori di 1 in ordine crescente. Quindi elenchiamo numeri dispari due volte maggiori di 1, quindi 4 volte, quindi 8 volte e così via: per tutti i k , elenchiamo 2 k volte i numeri dispari maggiori di 1 in ordine crescente. Infine, elenchiamo i poteri di due in ordine decrescente , terminando a 1. Ogni numero intero positivo si presenta in questo "elenco" esattamente una volta.
Più esplicitamente, considerare due interi positivi distinti A = n · 2 p e B = m · 2 q , dove n, m ≥ 1 sono dispari e p, q ≥ 0 . Quindi A viene prima di B nell'ordinamento, se sussiste una delle seguenti condizioni:
- n> 1 , m> 1 e p <q
- 1 <n <m e p = q
- n> m = 1
- n = m = 1 e p> q
Questo ordinamento appare nel sorprendente risultato matematico noto come teorema di Sharkovskii , che riguarda i punti periodici dei sistemi dinamici. Non entrerò nei dettagli qui.
L'obiettivo
Il tuo compito in questa sfida è calcolare l'ordine sopra indicato. I tuoi input sono due numeri interi positivi A e B , che possono essere uguali. L'output è un valore veritiero se A precede B nell'ordinamento e un valore falso in caso contrario. Se A = B , l'output dovrebbe essere veritiero. Puoi prendere A e B in entrambi gli ordini, purché tu sia coerente.
Non devi preoccuparti dell'overflow di numeri interi, ma il tuo algoritmo dovrebbe teoricamente funzionare con input arbitrariamente grandi.
Casi test
Istanze sincere
3 11
9 6
48 112
49 112
158 158
36 24
14 28
144 32
32 32
32 8
3 1
1 1
Casi falsi
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)
?