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 0
lub 1
jest 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).
463
Jest teraz w składzie (pogrubione) poleceń, które robią coś natychmiast, zamiast (non-bold) nakazuje, że wystarczy nacisnąć literałów. 4
przestawia sekcje, aby uzyskać nasz „dosłowny ciąg znaków” w pierwszej sekcji. Następnie 0
wykonuje 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
- 5
jest 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 3
drukuje.
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.)