Sapevi che un numero piccolo può prendere in prestito bit da un numero più grande? Ecco un esempio Diciamo che i nostri due numeri 5 e 14. Innanzitutto, scrivili in binario:
5 14
000101 001110
In primo luogo prendiamo il più piccolo sul po 'lontano dal numero maggiore, e diamo al più piccolo fuori po' l'altro numero. Così
This bit turns off
|
v
000101 001110
^
|
This bit turns on
Ora abbiamo
000111 001100
e i nostri numeri sono 7 e 12. Il primo numero è ancora più piccolo, quindi continuiamo.
000111 001100
001111 001000
Ora abbiamo 15 e 8, quindi possiamo fermarci. Chiameremo questo insieme di operazioni "prendere in prestito bit" due numeri. Facciamo un altro esempio. 20 e 61.
20 61
010100 111101
010101 111100
010111 111000
111111 100000
63 32
Quindi il nostro risultato finale è 32, 63. Facciamo ancora uno . 31 e 12. 31 è già più grande di 12, quindi non c'è niente da fare! Il prestito di bit 31 e 12 dà 31 e 12, nessuna modifica.
La sfida
La tua sfida è scrivere un programma o una funzione che prende due numeri e li prende in prestito a bit. I due numeri saranno sempre numeri interi positivi. I tuoi input e output possono essere in qualsiasi formato ragionevole.
Test IO:
Input: 2, 3
Output: 3, 2
Input: 3, 2
Output: 3, 2
Input: 8, 23
Output: 31, 0
Input: 42, 81
Output: 63, 0
Input: 38, 41
Output: 47, 32
Input: 16, 73
Output: 23, 0
Input: 17, 17
Output: 17, 17
Si applicano scappatoie standard e vince la risposta più breve in byte!