Twoim zadaniem jest wyprowadzenie dokładnego ciągu
The Jabberwocky
bez udziału. Obowiązują normalne zasady dotyczące wejścia i wyjścia, więc dozwolone są zarówno funkcje, jak i programy.
Oczywiście jest haczyk, nie byłoby fajnie bez haczyka. Twój program po pozbawieniu znaków alfabetycznych musi uruchomić wiersz Jabberwocky (bez rozróżniania wielkości liter). Aby rozpocząć wiersz, musi on być ciągłym podciągiem wiersza, zaczynając od początku. Pusty ciąg znaków jest w porządku (chociaż prawdopodobnie nie uzyskasz zbyt dobrego wyniku).
Oto tekst w celach informacyjnych:
twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyesofflamecamewhifflingthroughthetulgeywoodandburbledasitcameonetwoonetwoandthroughandthroughthevorpalbladewentsnickersnackheleftitdeadandwithitsheadhewentgalumphingbackandhastthouslainthejabberwockcometomyarmsmybeamishboyofrabjousdaycalloohcallayhechortledinhisjoytwasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabe
Oto program, którego możesz użyć do przetestowania tej właściwości.
Jeśli zabraknie wiersza do użycia, nie możesz używać żadnych dodatkowych znaków alfabetycznych.
Znaki alfabetyczne to znaki a
- z
i A
- Z
oto pełna lista:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Punktacja
Twój program będzie oceniany w liczbie używanych bajtów niealfabetycznych, przy czym mniej będzie lepszych.
Oto program Haskell, który zdobywa odpowiedzi. (Zakłada się, że dane wejściowe są prawidłowe)
Przykładowy program
Poprawny byłby następujący program:
twas&*brilliga77812nd Thesli thyt Oves didgy reand Gim bleinth ewab eal lmims ywe""""""""
ret h eb or o g o ve sa n dthemomerAthsoutgrabebewaretheJABBERWOCKmysonthe)(*)()((*98980908(()*(jawsthatbit
Po sprowadzeniu do znaków alfabetycznych jest to:
twasbrilligandTheslithytOvesdidgyreandGimbleinthewabeallmimsyweretheb orogovesandthemomerAthsoutgrabebewaretheJABBERWOCKmysonthejawsthatbit
Który pasuje do pierwszego bitu wiersza (bez rozróżniania wielkości liter).
Ten program uzyskałby wynik 59, ponieważ zawiera te znaki niealfabetyczne:
&*77812 """"""""
)(*)()((*98980908(()*(
źródło
Jabberwocky
(bez artykułu), a nazwa bestii tothe Jabberwock
(bez -y ). Oczywiście nie możesz teraz zmienić wymaganej mocy wyjściowej, ale ...Odpowiedzi:
oOo KOD , wynik 0
Podziękowania dla Dennisa za grę w kod Brainfuck.
Wypróbuj online!
Mam złe wieści na temat tego wyzwania ... :(
oOo CODE to po prostu binarne kodowanie pieprzenia mózgu, które wykorzystuje wielkość liter dla każdego bitu. Tak więc, ponieważ wiersz jest wystarczająco długi (lub wystarczająco krótki), aby pokryć program Brainfuck, który drukuje
The Jabberwocky
(bez faktycznego próbowania gry w golfa), staje się to trywialna optymalna odpowiedź.źródło
C, wynik
1047974Dzięki @gastropner za obniżenie wyniku do 79 i dzięki @ wizzwizz4 za dalsze obniżenie wyniku do 74!
Wypróbuj online!
źródło
//abcdefgh\n
byłoby o 1 mniej znaków niż/*abcdefgh*/
?Rozszczepienie 2 , wynik 3
Wypróbuj online!
Wyjaśnienie
Możemy zignorować większość małych liter, one po prostu ustawiają energię atomu na punkcie kodowym.
Wielkie litery
R
to punkt wejścia programu, ponieważ tworzy on atom poruszający się w prawo. Jak powiedziałem, możemy zignorowaće
. Następnie"
przełącza tryb ciągów, który po prostu drukuje wszystkie napotkane znaki na STDOUT, co daje namThe Jabberwock
. To tylko pozostawiay
. Moglibyśmy użyć tych,y
które pojawią się natychmiasty
, ale wtedy musielibyśmy zmarnować co najmniej jeden bajt nieliterowy na jego wydruk (!
) i ewentualnie inny na zakończenie programu.Zamiast tego cierpliwie czekamy na
y
pojawienie się bezpośrednioo
w wierszu. Ponieważ pozwala nam to na użycieO
znaku, który drukuje postać i niszczy atom, kończąc program. W ten sposób jedynymi potrzebnymi znakami nieliterowymi są spacja i dwa cudzysłowy.źródło
Alice , wynik 7
Wypróbuj online!
/
Sprawia, że ruch IP przekątnej i odbijają się od krawędzi, więc faktycznie wykonywane są instrukcje"The "ono@
.n
Rozkaz (w trybie porządkowej) popycha łańcuch „Jabberwocky” jeżeli wierzch stosu jest pusty, io
wyprowadza się z górnej części stosu.źródło
Galaretka , ocena
64Pełny program
wypisujący wynik (jako monadyczny link drukuje
The Jabberwock
jako efekt uboczny i zwraca znaky
)Wstawia znaki
“ ””
do prefiksu wiersza ze zmienioną wielkością liter.Działa to, ponieważ:
Ostatnim
h
przedSOUTGRABEBEWARE“The Jabberwock”m”y
(przynajmniej w chwili pisania tego tekstu!) Niezdefiniowany atom, który sprawia, że wszystko staje się nowy związek, który trwa domyślne wejście0
i wykonuje pewne funkcje monadycznego,SOUTGRABEBEWARE
, których wydajność1
(patrz niżej).1“The Jabberwock”m
następnie wykonujem
cięcie plastry modulo,"The Jabberwock"
z wielkością plastra1
, dając"The Jabberwock"
.Końcowy
”y
ciąg jest nowym wiodącym ciągłym łańcuchem, więc Jelly drukuje tę listę znaków, a następnie zwraca znaky
, a ponieważ jest to koniec programu, drukuje się.Poprzednie 6 bajtów:
Wypróbuj online!
Sześć nie-wierszowych znaków to znak nowej linii
“ ”1“
.Alternatywne 6s:
źródło
m1“y
? Nadal drukujeThe Jabberwock
i zaczyna się od podzbioru wierszam1“y
(lub może byćm1”y
) jest potrzebne, ponieważ musimy drukowaćThe Jabberwocky
, a nieThe Jabberwock
.Węgiel , wynik 3
Wypróbuj online!
Wstawiono trzy znaki:
⎚ ⌈
... działa również z całym wierszem .
W jaki sposób?
źródło
Ruby (
-p
), wynik 12Wypróbuj online!
Nadużywaj wszystkich komentarzy!
Z
-p
flagą ruby wydrukuje wszystko, co jest zapisane$_
. Wymaga jednego wiersza dowolnego wejścia.źródło
-p
tu użyć , ze względu na wymaganą linię wprowadzania. „Twoim zadaniem jest wyprowadzenie dokładnego ciąguThe Jabberwocky
bez przyjmowania danych wejściowych.”-p
jest flagą wiersza poleceń, a nie danymi wejściowymi.Węgiel drzewny , wynik:
54Wypróbuj online! Edycja: Zapisano 1 bajt dzięki tylko @ ASCII. Objaśnienie: Przekłada się na następujący pełny kod:
źródło
Foo , ocena 5
Wypróbuj online!
źródło
> <> , Wynik:
1312Wypróbuj online!
Weryfikacja i ocena .
Natychmiast przekierowuje do drugiej linii, która wypycha „Jabberwockmy” w odwrotnej kolejności do stosu.
$~
wyskakuje nadmiarm
i>ro<
drukuje cały stos, uprzednio go odwracając.źródło
Siatkówka 0.8.2 , wynik:
212018161386Wypróbuj online! Edycja: Wynik zmniejszony o 2 dzięki @MartinEnder.
źródło
*
zamiast$*
).C, wynik 23
Wypróbuj online!
źródło
Yabasic , 13
Dzięki za Rubinową odpowiedź @ Pavela!
Wypróbuj online!
źródło
VBA, ocena 5
Uruchom w oknie natychmiastowym:
Jak to działa:
-
-
-
-
-
1 znak zapytania, 1 spacja i 3 podwójne cudzysłowy. VBA widzi to jako
?"" & "The Jabberwock" & "" & "y"
lub?"The Jabberwocky"
źródło
Haskell , ocena 12
Wypróbuj online!
Definiuje funkcję zerowego argumentu,
twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware :: String
której wynikiem jest"The Jabberwocky"
.źródło
Java (OpenJDK 9) , wynik 11
Wypróbuj online!
Kredyty
źródło
()
nat
(nieużywanyVoid
parametr zerowy) i usuwając interlinięt
z komentarza.<s>16</s> 14
I wolę, jak zawsze w każdej sieci StackExchange, aby uzyskać ostateczną odpowiedź. Same zmiany są wymienione na stronie wersji , dzięki czemu każdy może zobaczyć rzeczywiste zmiany i ewolucję odpowiedzi w czasie, zamiast umieszczać wszystkie przeszłe i bieżące informacje w jednym dużym, nieczytelnym poście.PowerShell , wynik:
1910Wypróbuj online!
Rubinowa odpowiedź Porta Pavela . Dzięki Jo King za -9 punktów.
Struny są
+
łączone razem. Po usunięciu komentarzy i analizie kodu program PowerShell widzi to jako'The Jabberwock'+'y'
. Ten ciąg jest pozostawiony w potoku, a dane wyjściowe są niejawne.źródło
The
iJabberwock
w jednym ciągu? Wypróbuj online!Galaretka , wynik: 8
Wypróbuj online!
Po prostu kompresuje ciąg znaków i jest ciągiem pustym po usunięciu wszystkich znaków niebędących alfabetami. Irytujące, najkrótsza skompresowana forma,
“81Iȯd»
ma znaki alfabetyczne, z których żaden nie jestt
lubw
źródło
Stax , 11
Uruchom i debuguj online!
Tylko skompresowany dosłowny ciąg znaków, który z kolei jest zapakowany.
źródło
05AB1E , wynik 14
Wypróbuj online!
źródło
Płótno , wynik 5
Wypróbuj tutaj!
źródło
SOGL V0.12 , wynik 9
Wypróbuj tutaj!
źródło
Pip , ocena 5
Wypróbuj online!
Na szczęście wszystkie małe litery w Pipie są zmiennymi, które same w sobie nie wyrażają się w wyrażeniach. Interesująca część kodu:
Skaner rozpada się,
OOD
aO
następnieOD
.OD
jest niezdefiniowaną zmienną, która ma wartość zero (falsey); następnie logicznie - lub to z"The Jabberwock"
, iO
wyprowadzamy go bez nowej linii.Ciąg jednoznakowy
y
. Ponieważ jest to ostatnie wyrażenie w programie, jest drukowane.źródło
SmileBASIC, wynik 10
Zostało to prawie zaczerpnięte bezpośrednio z odpowiedzi Yabasic, a
ponieważ SB jest lepszym językiem,możemy go skrócić za pomocą etykiet zamiast komentarzy, co eliminuje potrzebę niektórych podziałów liniiIstnieje również to alternatywne rozwiązanie dla tego samego rozmiaru:
Etykieta wewnątrz wyrażenia jest traktowana jako ciąg. (
@my == "@my"
), więc przyjęcie znaku 2 daje „y”.źródło
C (gcc) , wynik 58
Przydatny fakt, że // komentarze w stylu + nowe linie są tańsze niż w starym stylu, pochodzi prosto z komentarza @ wizzwizz4 dla odpowiedzi @ Steadybox .
Flaga -m32 jest wymagana.
Długie nazwy funkcji mogą wywoływać u niektórych kiepski nastrój, podczas gdy inni słusznie uznają takie zarzuty za naśladujące; w końcu wszyscy musimy słuchać syrenowej piosenki o niskich wynikach.
Wypróbuj online!
źródło
Partia, wynik
1511Zasadniczo tylko
echo The Jabberwocky
z nieużywanymi zmiennymi i etykietami.Stara wersja (24 punkty):
Wymaga zapisania kodu w pliku o nazwie
n.bat
i uruchomienia z tego samego katalogu.Alternatywna wersja, która może mieć dowolną nazwę (wynik 27):
Objaśnienie (z usuniętymi zmiennymi):
źródło
Perl 5, podprogram, wynik 11
ale ze znakiem \ x86 (
v134
) zamiast X.(perlsub mówi: „Podpis jest częścią ciała podprogramu. Zwykle ciało podprogramu jest po prostu wzmocnionym blokiem kodu”).
źródło
y
?Rubinowy , 9 bajtów nieliterowych
Wypróbuj online!
Wersja golfowa (dla czytelności):
Wykorzystuje kilka długich i bezużytecznych zmiennych. W Ruby możesz umieścić
whatever_you_want=
przed wyrażeniem, a ono nadal zwróci to wyrażenie, tylko z efektem ubocznym utworzenia zmiennej o dziwnej nazwie.źródło
Samomodyfikujący Brainfuck , wynik 16
Wypróbuj online!
Wyjaśnienie
Początkowo taśma jest skonfigurowana w następujący sposób:
<[<<]
>
[.>]
>>.
źródło
Rozszczepienie , wynik 6
Wypróbuj online!
źródło