7 , 23 znaków, 9 bajtów
54340045141332401057403
Wypróbuj online!
To dość trudne wyzwanie w języku składającym się wyłącznie z cyfr, ale udało mi się…
To tylko 9 bajtów w kodowaniu 7. (Ściśle mówiąc, jest to 8⅜ bajtów (23 × ⅜ - ¼, ponieważ ostatnie dwa końcowe 1 bity można pominąć), ale po raz pierwszy wymóg PPCG dotyczący zaokrąglenia w górę do pełnej liczby bajtów jest w rzeczywistości zaletą, ponieważ oznacza, że dodatkowe końcowe 1 bity są konieczne i dlatego nie są zbanowane przez pytanie.) Odwracalny zrzut heksowy:
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
Głównym wyzwaniem pisania tego programu w 7 była gra w golfa poniżej 10 bajtów (jako pisanie 7 bez użycia 0lub 1jest dość trudne.) Używa tej samej struktury co standardowy program „Hello world”:
5434004514133240105 7 403
5434004514133240105 polecenia 0-5 dołączają literały do przestrzeni danych
7 uruchom nową sekcję przestrzeni danych
403 kolejny literał dołączony do przestrzeni danych
{niejawnie: ewaluuj ostatnią sekcję jako polecenia}
4 zamień pierwszą i drugą sekcję z pustą sekcją między
6 zrekonstruuj polecenia, które utworzyłyby wynik pierwszej sekcji
3 (+ kilka innych efektów, na których nam nie zależy)
Innymi słowy, zaczynamy od utworzenia dwóch sekcji przestrzeni danych; mamy dwa literały, z których każdy wypycha sekwencję poleceń. Druga sekcja (są one wypychane w stylu stosu, więc pierwsze naciśnięcie = ostatni pop) jest dość dowolną sekwencją poleceń, ale jest wypychana za pomocą sekwencji poleceń 5434004514133240105(tworząc w ten sposób sekwencję danych 5434664574733246765; podczas omawiania 7 w tekście zwykle używam normalnej czcionki dla polecenia wypychającego literał i pogrubionego dla odpowiadającego mu wynikowego literału). Pierwsza sekcja jest wypychana za pomocą sekwencji poleceń 403, tworząc 463. Następnie pierwsza sekcja jest kopiowana z powrotem do programu (niejawne zachowanie 7).
463Jest teraz w składzie (pogrubione) poleceń, które robią coś natychmiast, zamiast (non-bold) nakazuje, że wystarczy nacisnąć literałów. 4przestawia sekcje, aby uzyskać nasz „dosłowny ciąg znaków” w pierwszej sekcji. Następnie 0wykonuje się operację, z której 7 jest najbardziej znana: pobranie części przestrzeni danych i odtworzenie sekwencji poleceń, która najprawdopodobniej ją utworzyła. W przypadku, gdy oryginalna sekwencja poleceń była wszystkim 0- 5jest to w 100% dokładne (co nie jest zaskakujące, ponieważ polecenia te jedynie przekazują dane, a tym samym pozostawiają oczywiste dowody na to, co zrobili), więc odzyskujemy naszą oryginalną sekwencję 5434004514133240105. Wreszcie 3drukuje.
Pozostaje więc do obejrzenia tutaj kodowanie łańcucha. Ma on swój własny język specyficzny dla domeny:
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(W zestawie znaków „cyfry i wspólne symbole” nie ma „wybierz zestaw znaków: małe litery” - najpierw musisz przejść przez inny zestaw znaków - więc musiałem użyć wielkich liter, aby zagrać w golfa na tyle krótko, aby zmieścił się pod skutecznym 10 Limit bajtów.)