Es stellte sich heraus, dass es einige entfernte Aliens gibt, die Englisch sprechen (und zufällig auf 8-Bit-Computerarchitekturen standardisiert sind) . Sie haben noch nie von ASCII gehört, noch nicht einmal von alphabetischer Reihenfolge.
Es wird angenommen, dass diese Außerirdischen Informationen von der Erde sammeln. Dabei handelt es sich um ein digitales Gerät, das bedeutungslose Informationen liest, wenn keine Übertragung erfolgt. Daher muss das Signal so enthalten sein, dass es sich von Umgebungsgeräuschen abhebt.
Es wurde ein neuer Standard erstellt, der der Verwendung einer Semiprime-Signallänge durch Arecibo Message nachempfunden ist:
Universelle semiotische Codierung für den Informationsaustausch (USCII)
(Siehe: http://uscii.hostilefork.com )
In USCII wird jeder Code von einer Bitmap abgeleitet, die das Zeichen darstellt, das eine Primbreite und eine Primhöhe hat. Zum Beispiel diese 5x7 Darstellung eines Buchstabens A:
01110
10001
10001
10001
11111
10001
10001
Das ergibt 35 Bit. Damit sich Nachrichten mit nur einem Zeichen vom Rauschen abheben und kohärent aussehen, sind Zeichenfolgen in ein Containerformat eingebettet, mit dessen Hilfe die Primfaktoren verstärkt werden. Der Container wurde ausgewählt, um das Manipulieren der Zeichenfolgen auf Architekturen, die ein Vielfaches von 8 Bit verarbeiten, zu vereinfachen.
Mit seinem Container würde das "A" wie folgt aussehen:
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
Den Zeichen der Nachricht werden zunächst fünf durchgehende 5x7-Bitmaps vorangestellt und am Ende sieben durchgehende 5x7-Bitmaps hinzugefügt. (Das "Meter" .) Dann hat jedes von diesen fünf 0 Bits am Ende, um gerade 40 Bits zu machen.
Schließlich werden am Anfang 7 40-Bit-Läufe mit allen Nullen und am Ende 5 40-Bit-Läufe mit allen Nullen hinzugefügt. (Die "Stille" .)
Deine Mission
Sie sollen einen Encoder schreiben. Die Eingabe ist eine herkömmliche ASCII-Zeichenfolge, die über die Tastatur eingegeben wird. Die verwendeten Bitmaps stammen aus der 5x7- PIC-CPU-Schriftart .
(Hinweis: Es ist einfach genug, die Schrift für alle talentierten Code-Golfer hier von der Seite zu extrahieren, aber wenn Sie diese Bytes alle zusammen haben möchten, sind sie hier .)
Die Ausgabe sollte eine gedruckte Zeichenfolge in hexadezimaler Schreibweise sein.
Beispiele
Eingabe :
ABCDEFG
Ausgabe :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Eingabe :
Dear aliens: Please get me off of this planet!!!
Ausgabe :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Klarstellungen
- Es ist nicht erforderlich, nicht druckbare Zeichen für diese Aufgabe zu verarbeiten (Feedback zu Ideen, wie diese aussehen könnten, ist jedoch willkommen).
Gewinnbedingungen
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Antworten:
Python 2,
671669663 BytesPHP mit Zlib,
738716715 BytesZunächst muss Ihr PHP mit konfiguriert werden
--with-zlib
. Und führen Sie dieses Skript von der Kommandozeile aus, wiephp 26972.php
. Dieses Programm nimmt Eingaben von STDIN entgegen.(Wenn
short_open_tag=On
, kann ich 3 weitere Bytes sparen.)Ungolfed
quelle
C
Dies gibt tatsächlich lesbare Hex-Werte aus (im Gegensatz zu Binärwerten für Lesbarkeit). Alles wird in vorzeichenlosen langen langen Zeichen dargestellt und es werden nur 9-10 hexadezimale Ziffern verwendet, da das unglückliche 6x5-Format (eine 8x4-Schriftart wäre einfach zu einfach gewesen) (abhängig davon, ob Sie die 00000-Auffüllung verwenden).
Bash
quelle
0x##number##ULL
(siehe Bash-Version für die Char-Alternative), aber ideone.com dachte, es sei ein Funktionsaufruf, also habe ich es nix gemacht (gcc war in Ordnung) ... Ich könnte die Leere auch von der Hauptleitung entfernen, aber einige Dinge scheinen einfach falsch zu sein.PHP, 874 Bytes
Sie müssen dieses Skript über die Befehlszeile (
php uscii.php
) ausführen, da es Eingaben von stdin entgegennimmt.Ungolfed:
quelle
JavaScript ES6 (838 Bytes)
Nicht zerkleinert :
quelle