Il bulbo oculare dei valori binari stampati come ovali e bastoncini non è così facile ... Per aiutarti, devi scrivere una funzione (o un programma) che stampa i numeri nella rappresentazione binaria personalizzata.
Quindi voglio prendere un numero, dire 3 ( 00000011
) e generare i bit in un formato definito dall'utente, ad esempio con coppie separate da spazio:
00 00 00 11
o, diciamo, in ordine inverso e con alcuni decoratori, ad esempio:
11_00_00_00
Inoltre, ci deve essere la possibilità di mostrare '0' e '1' come caratteri personalizzati per distinguerli meglio, ad esempio:
XX oo oo oo
Quindi la sfida è scrivere il codice che fa tutto ciò con la seguente specifica.
specificazione
La funzione accetta input in questo modo: f (A, maschera, zeri, uno)
parametri:
A - numero di input - qualsiasi numero intero (senza segno) nell'intervallo 0-255.
maschera - un parametro stringa che definisce la costruzione dell'output.
zeri - una stringa della stessa lunghezza, definisce glifi "zero" per ogni slot di uscita.
uni - una stringa della stessa lunghezza, definisce glifi "uno" per ogni slot di uscita.
Regole per la costruzione dell'output:
Guarda questa immagine con l'esempio da vicino per capire come viene generato l'output:
Quindi solo le singole cifre nella maschera vengono analizzate e sostituite dai corrispondenti bit di A, gli altri caratteri vengono lasciati così come sono . Inoltre, se il valore del bit rilevato è 1, viene visualizzato nell'uscita finale come "X" e se è 0, viene visualizzato come "o". Nell'esempio sopra tutti e quattro i bit presi sono "1", quindi vediamo "X" in tutti gli slot.
Se il numero di input fosse 128, logicamente, l'output sarebbe X foo bar ooo
. Caratteri nei parametri "zeri" e "uni": qualsiasi carattere ASCII stampabile, si presume che siano sempre allineati ai caratteri con la maschera.
Note :
- I bit sono indicizzati 0: 0 ° bit è l'MSB.
- Supponiamo che le cifre 8,9 non siano consentite nella stringa della maschera.
- Le stringhe di input includono tutti i caratteri ASCII stampabili.
- 'Zeri' e 'uni' sono allineati al carattere con la maschera.
- Per caratteri / modificatori speciali nella tua lingua: possiamo presumere che non appariranno nella stringa di input.
Per la chiarezza, vedi altri esempi.
Input -> Esempi di output
Emette tutti gli 8 bit in ordine comune con un delimitatore di spazio, in notazione ovale e stick comune:
mask = "0123 4567"
zeros = "0000 0000"
ones = "1111 1111"
A=1 -> 0000 0001
Uscita in ordine inverso, in notazione trattino e glifo:
mask = "| 7654 3210 |"
zeros= " ---- ---- "
ones = " ssss ssss "
A=1 -> | s--- ---- |
A=3 -> | ss-- ---- |
A=128-> | ---- ---s |
Diverse notazioni in un output, ad es. Per dati compressi:
mask = "0 | 123 4567"
zeros= " --- ----"
ones = "X kkk ssss"
A= 15 -> | --- ssss
A= 16 -> | --k ----
A= 32 -> | -k- ----
A= 128 -> X | --- ----
A= 255 -> X | kkk ssss
Motivi ripetuti:
mask = "| 7 66 555 4444 |"
zeros= " . .. ... .... "
ones = " 0 00 000 0000 "
A= 0 -> | . .. ... .... |
A= 1 -> | 0 .. ... .... |
A= 2 -> | . 00 ... .... |
A= 3 -> | 0 00 ... .... |
A= 4 -> | . .. 000 .... |
Aggiornare
Le regole sono state leggermente semplificate: il programma deve stampare un solo numero (non matrice / elenco di numeri come inizialmente proposto).
A
faccia, dal momento che è lo stesso in tutti i casi di test