Si scopre che ci sono alcuni alieni lontani che conoscono l'inglese (e hanno coinciso casualmente su architetture di computer a 8 bit) . Eppure non hanno mai sentito parlare di ASCII, né di un ordine alfabetico.
Si ritiene che questi alieni stiano raccogliendo informazioni dalla Terra. Eppure lo stanno facendo con apparecchiature digitali che leggono informazioni insignificanti quando non viene inviata alcuna trasmissione ... quindi il segnale deve essere contenuto in modo da distinguersi dal rumore circostante.
È stato creato un nuovo standard, modellato sull'uso del messaggio di semiprime da parte del messaggio di Arecibo:
Universal Semiotic Coding for Information Interchange (USCII)
(Vedi: http://uscii.hostilefork.com )
In USCII, ogni codice è derivato da una bitmap che rappresenta il carattere, che ha una larghezza primaria e un'altezza primaria. Ad esempio, questa rappresentazione 5x7 di una lettera A:
01110
10001
10001
10001
11111
10001
10001
Questo produce 35 bit. Tuttavia, al fine di far risaltare dal rumore anche i messaggi a carattere singolo e apparire coerenti, le stringhe sono incorporate in un formato contenitore che aiuta a rafforzare i fattori primi. Il contenitore è stato scelto per facilitare anche la manipolazione delle stringhe su architetture che operano su multipli di 8 bit.
Con il suo contenitore, la "A" sopra dovrebbe apparire come:
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
0111010001100011000111111100011000100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
I caratteri del messaggio hanno prima il prefisso con cinque bitmap solide 5x7 e sette bitmap solide 5x7 aggiunte alla fine. (Il "metro" .) Quindi ognuno di questi ha cinque 0 bit incollati sull'estremità per fare anche 40 bit.
Infine ci sono 7 esecuzioni all-zero a 40 bit aggiunte all'inizio e 5 esecuzioni all-one a 40 bit aggiunte alla fine. (Il "silenzio" .)
La tua missione
Devi scrivere un codificatore. L'input è una stringa ASCII convenzionale digitata dalla tastiera. Le bitmap che userete provengono dal font CPU 5x7 PIC .
(Nota: è abbastanza facile estrarre il carattere dalla pagina per tutti i talentuosi golfisti di codice qui, ma se vuoi quei byte tutti insieme qui sono .)
L'output dovrebbe essere una stringa stampata in esadecimale.
Esempi
Input :
ABCDEFG
Uscita :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Input :
Dear aliens: Please get me off of this planet!!!
Uscita :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
chiarimenti
- Non è necessario gestire caratteri non stampabili per questo compito (anche se è gradito il feedback sulle idee su come potrebbero apparire )
Condizioni vincenti
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF