Okazuje się, że istnieją odległe kosmici znający angielski (i przypadkowo znormalizowani na 8-bitowych architekturach komputerowych) . Jednak nigdy nie słyszeli o ASCII ani nawet porządku alfabetycznym.
Uważa się, że ci kosmici zbierają informacje z Ziemi. Robią to jednak ze sprzętem cyfrowym, który odczytuje bezsensowne informacje, gdy żadna transmisja nie jest wysyłana ... dlatego sygnał musi być zawarty w sposób odróżniający się od otaczającego hałasu.
Utworzono nowy standard, wzorowany na użyciu komunikatu Arecibo o długości sygnału semiprime:
Universal Semiotic Coding for Information Interchange (USCII)
(Zobacz: http://uscii.hostilefork.com )
W USCII każdy kod pochodzi z mapy bitowej reprezentującej znak, który ma szerokość pierwszą i wysokość pierwszą. Na przykład ta reprezentacja litery A 5x7:
01110
10001
10001
10001
11111
10001
10001
To daje 35 bitów. Jednak aby nawet jednoznakowe komunikaty wyróżniały się z szumu i wyglądały spójnie, ciągi znaków są osadzone w formacie kontenera, który pomaga wzmocnić czynniki pierwsze. Kontener został wybrany, aby ułatwić manipulowanie ciągami w architekturach, które działają na wielokrotnościach 8 bitów.
Ze swoim pojemnikiem powyższe „A” wyglądałoby następująco:
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
Znaki wiadomości są najpierw poprzedzone pięcioma jednolitymi mapami bitowymi 5x7, a na końcu dodanymi siedem jednolitych map bitowych 5x7. ( „Licznik” .) Następnie każdy z nich ma pięć zer bitów sczepionych na końcu, aby uzyskać nawet 40 bitów.
Wreszcie, na początku dodanych jest 7 całkowicie zerowych 40-bitowych przebiegów, a na końcu 5 wszystkich 40-bitowych przebiegów. ( „Cisza” .)
Twoja misja
Masz napisać enkoder. Dane wejściowe to konwencjonalny ciąg ASCII wpisywany z klawiatury. Użyte bitmapy pochodzą z czcionki PIC CPU 5x7 .
(Uwaga: Łatwo jest wyodrębnić czcionkę ze strony dla wszystkich utalentowanych golfistów tutaj, ale jeśli chcesz, aby wszystkie bajty razem tutaj były ).
Dane wyjściowe powinny być drukowanym ciągiem szesnastkowym.
Przykłady
Wejście :
ABCDEFG
Wyjście :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Wejście :
Dear aliens: Please get me off of this planet!!!
Wyjście :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Wyjaśnienia
- W tym zadaniu nie ma potrzeby obsługiwać znaków niedrukowalnych (choć mile widziane są opinie na temat tego, jak mogą one wyglądać )
Warunki wygranej
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Odpowiedzi:
Python 2,
671669663 bajtyPHP z zlib,
738716715 bajtówNajpierw należy skonfigurować PHP
--with-zlib
. I uruchom ten skrypt z wiersza poleceń, na przykładphp 26972.php
. Ten program pobiera dane wejściowe ze STDIN.(Jeśli
short_open_tag=On
mogę zapisać jeszcze 3 bajty.)Nie golfił
źródło
do
To faktycznie drukuje hex czytelny dla człowieka (vs binarny dla czytelności). Wszystko jest reprezentowane długimi, niepodpisanymi, długimi i używa się tylko 9-10 cyfr szesnastkowych, ponieważ (w zależności od tego, czy dołączasz wypełnienie 00000) niefortunny format 6 x 5 (czcionka 8 x 4 byłaby po prostu zbyt łatwa)
grzmotnąć
źródło
0x##number##ULL
(zobacz wersję bash dla alternatywy char), ale ideone.com myślało, że to wywołanie funkcji, więc go usunąłem (gcc było w porządku) ... Mógłbym również usunąć (void) z głównego, ale niektóre rzeczy wydają się po prostu złe.PHP, 874 bajty
Będziesz musiał uruchomić ten skrypt z linii poleceń (
php uscii.php
), ponieważ pobiera dane wejściowe ze standardowego wejścia.Nie golfowany:
źródło
JavaScript ES6 (838 bajtów)
Nie zgnieciony :
źródło