7 , 10 bajtów, 27 znaków
115160723426754314105574033
Wypróbuj online!
Spakowana reprezentacja tego programu na dysku to ( xxd
format):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
Wyjaśnienie
Widzieliśmy już tę sekwencję liczb w Automate Saving the World , która polegała na drukowaniu liczb w regularnych odstępach czasu, czyniąc ją interesującą, wymagając użycia bardzo starego języka. Jednak znacznie nowsze języki mogą mieć własne zwroty akcji, które sprawiają, że to wyzwanie jest interesujące. (Tak, ten akapit, a właściwie powód, dla którego zacząłem pisać tę odpowiedź, jest faktycznie tylko sposobem, aby wszystkie powiązane wyzwania pojawiły się razem na pasku bocznym; zwykle ludzie robią to za pomocą komentarzy, ale nie mam wystarczającej liczby przedstawicieli .)
Pierwszą rzeczą, na którą należy zwrócić uwagę, jest fakt, że 7 składa się wyłącznie z cyfr, więc uzyskanie bonusów tutaj raczej nie zadziała (chociaż jeśli postrzegasz program jako sekwencję oktetów, żadna z nich nie odpowiada reprezentacjom ASCII żadnej z pierwotnych liczb , abyś mógł ubiegać się o bonus w tym sensie). Następną rzeczą do odnotowania jest to, że 7 ma polecenia do odtworzenia sekwencji poleceń, które prawdopodobnie wytworzyły określony fragment danych; więc moglibyśmy zinterpretować utracone liczby4815162342
jako część samego programu 7?
Odpowiedź brzmi „niezupełnie”. Najbardziej problematyczną częścią jest ta druga liczba,8
. 7 programów jest zapisanych ósemkowo; nie ma takiej liczby jak 8. Zatem początek łańcucha będzie musiał być wydrukowany inaczej.
Podstawa programu opiera się zatem na 7 programie „Hello world”:
5431410557403
543141055 string literal
7 separate data from code
4 rearrange stack: {program's source}, empty element, {literal}
0 escape {the literal}, appending it to {the empty element}
3 output {the escaped literal}, pop {the program's source}
z literą Escape w języku specyficznym dla domeny, interpretowanym w następujący sposób:
5 output format: US-TTY using pairs of digits in the string
43 select character set: digits and common symbols
14 "4"
10 "8"
55 forget the set output format
Potem przychodzi dodatkowy 3
, który wyprowadza pozostały element stosu (i wychodzi z powodu niewystarczającego pozostałego stosu). Ten element jest określony na początku programu i aby uniknąć niedopasowania 6
(który działa trochę jak nawias zamykający), generujemy go za pomocą kodu, a nie zapisujemy bezpośrednio jako dane. (Pamiętaj, że 7
na początku programu znajdują się dwa domniemane znaki), co jest istotne tutaj:
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
Daje to następujący literał:
115162324
1 set output format: literally as octal
15162324 "15162324"
który zostanie wydrukowany.