Scrivi una funzione o un programma che genera una base quater-immaginaria visualizzata come cifre binarie. La base numerica è 2 i , dove i è la radice quadrata di -1. Vedi il numero complesso per maggiori dettagli su i . Ogni posizione delle cifre può andare da 0 a 3 (quaternaria), poiché ogni parte reale e immaginaria è -4 volte più grande della precedente parte reale e immaginaria. Le cifre quaternari di binario sono i seguenti: 0: 00
, 1: 01
, 2: 10
e 3: 11
.
Ripartizione delle posizioni delle cifre:
re im 16 -8i -4 2i 1 -0.5i, etc.
4 0 1 0 3 0 0 (quaternary representation)
01 00 11 00 00 (binary representation)
Il numero 100110000
è 1x16 + 3x-4 = 16 + -12 = 4.
re im 16 -8i -4 2i 1 -0.5i, etc.
0 5 0 0 0 3 0 2 (quaternary representation)
00 00 00 11 00 .10 (binary representation)
Il numero 1100.1
è 3x2 i + 2x-0,5 i = 6 i + - i = 5 i .
Il codice prenderà una coppia di numeri, che potrebbero essere numeri interi o in virgola mobile, e produrrà il numero complesso come una stringa di cifre binarie. Il primo numero sarà reale, il secondo numero di input sarà il valore immaginario. Un punto binario deve essere stampato solo se ci sono posizioni di numero diverso da zero inferiori a 1 (ovvero se una delle posizioni per -0,5 i , -0,25, 0,125 i , ecc. Ha una cifra diversa da zero). Gli zeri iniziali e finali non sono consentiti, ad eccezione di una singola cifra zero immediatamente prima del punto binario se non ci sono altre cifre. L'output non deve iniziare con un punto binario (* 00.1
- errato, 0.1
- giusto, * .1
- sbagliato, * 0.10
- sbagliato). Si può presumere che tutti i numeri di input abbiano rappresentazioni binarie finite.
Numeri di prova:
re im output
0 0 0
1 0 1
2 0 10
3 0 11
4 0 100110000
-1 0 10011
-2 0 10010
-3 0 10001
0 1 100.1
0 2 100
0 3 1000.1
0 4 1000
0 -1 0.1
0 -2 1001100
0 -3 1001100.1
3 4 1011
4 3 100111000.1
6 -9 101110010.1
-6 9 10011100110.1
-9 -6 1110111
0.5 14.125 10011001101.001001
Nota: l'output di tutti i valori interi termina .1
se la parte immaginaria è dispari.
Code-golf standard.
0 → 00, 1 → 01, 2 → 10, 3 → 11
.