Lenguage to idiotyczny dialekt, który słynie z łamania ograniczeń związanych ze źródłami. Jest tak, ponieważ Lenguage dba tylko o długość swojego źródła, a nie o jego zawartość.
Najpierw obliczana jest długość programu. Następnie wspomniana długość jest konwertowana na dwójkową i dopełniana lewymi zerami do wielokrotności 3. Powstały ciąg dwójkowy jest dzielony na 3-częściowe fragmenty, z których każdy jest tłumaczony na komendę uderzenia mózgu jako taką:
000 -> +
001 -> -
010 -> >
011 -> <
100 -> .
101 -> ,
110 -> [
111 -> ]
Wreszcie program jest uruchamiany jako pieprzony mózg 1 .
Odtąd wyzwanie jest dość proste, napisz program lenguage, który nie pobiera danych wejściowych i generuje dane wyjściowe składające się z jednej bajtowej liczby całkowitej razy, przy czym jest ściśle większe niż długość twojego programu.
Odpowiedzi będą oceniane w bajtach, przy czym im mniej bajtów, tym lepiej.
Oto zhackowany program do obliczania lenguage'a z brainfuck
1: Do tego wyzwania użyjemy komórek owijających i taśmy nie zawijającej.
źródło
+[.]
Czy wygrywam : P+
jest najtańsza i]
najdroższa) i oczywiście ma to znaczenie, gdzie są w programie. Chociaż jest dobrym oszacowaniem, nie jest dokładnie równoważne.Odpowiedzi:
8437495638205698686671 bajtów
To przekłada się na program pieprzenia mózgów:
Który drukuje dokładnie231584178474632390847141970017375815706539969331281128078915168015826259279614 bajtów SOH.
Jest to obliczane przez funkcję
z wejściem 255.
Wyjaśnienie:
źródło
9093903938998324939360576240306155985031832511491088836321985855167849863863065731015823 bajtów
Które drukuje dokładnie
Podziękowania należą się @hvd w tej odpowiedzi Brainfuck , więc upewnij się, że go głosujesz!
Wyjaśnienie:
Chciałem napisać własne wyjaśnienie, ale zdałem sobie sprawę , że wyjaśnienie @hvd jest już na miejscu, więc zacytuję to tutaj:
źródło
19326644346528796447 bajtów
Kod Brainfuck:
Wydruki
puste bajty.
Działa to tak:
Dość prosta rekurencja.
źródło