Święto Dziękczynienia w Stanach Zjednoczonych zbliża się 24 listopada. Wiele osób będzie jadło duży obiad ze swoimi rodzinami, tradycyjnie włączając indyka i wiele przystawek. Zazwyczaj oznacza to, że członkowie rodziny muszą koordynować, kto przyniesie każdą z różnych potraw. W tym wyzwaniu celem jest napisanie poliglota, który wypuszcza inne danie w każdym języku, w którym jest uruchamiany.
Menu
(Wybrane z Wikipedii . W przypadku, gdy nie jest to oczywiste, każda linia to jeden element).
turkey
stuffing
dressing
cranberry sauce
mashed potatoes
gravy
winter squash
sweet potatoes
corn
green beans
green bean casserole
mac and cheese
macaroni and cheese
salad
rolls
biscuits
corn bread
pumpkin pie
apple pie
mincemeat pie
sweet potato pie
pecan pie
apple cider
sweet tea
Zasady
- Każde przesłanie musi przebiegać w co najmniej 3 językach , z których każdy musi wyświetlać inny element z menu. Nie możesz używać wielu wersji tego samego języka (np. Python 2 i Python 3 nie mogą być używane w tej samej odpowiedzi).
- Każdy wpis musi mieć te same bajty w kodowaniu każdego języka. Na przykład,
ɱ
to bajt0x1D
w kodowaniu Jelly , która odpowiada¢
w kodowaniu 05AB1E użytkownika . - Różne języki mogą korzystać z różnych metod wyjściowych, ale wpisy muszą być pełnymi programami we wszystkich językach i być zgodne z jedną z naszych domyślnych dozwolonych metod We / Wy .
- Żaden program nie może pobierać danych wejściowych, ale każdy z nich może drukować do STDERR lub generować błędy czasu wykonania / kompilacji i ostrzeżenia, dopóki prawidłowe wyjście jest nadal drukowane do STDOUT lub pliku.
- Wielkość liter i spacja nie mają znaczenia. Na przykład dane wyjściowe
GreenbeAN S
będą nadal liczone jakogreen beans
. - Ponieważ głównym daniem każdego 1 amerykańskiego posiłku na Święto Dziękczynienia jest indyk, jeden język musi zostać wyprowadzony
turkey
(ignorując wielkość liter i białe znaki).
Punktacja
Zgłoszenie, które tworzy unikalne prawidłowe wyniki w większości języków, wygrywa. W przypadku remisu wygrywa najkrótsza z powiązanych pozycji w bajtach.
1. Tak, indyk nie jest jedynym daniem głównym , ale zamierzamy udawać, że jest.
code-challenge
kolmogorov-complexity
polyglot
ETHprodukcje
źródło
źródło
cornbread
Odpowiedzi:
Pyke, Pyth, Python 2, Foo, Brain ****, GolfScript, Actually, <> <, Gol <> <, Seriously, Befunge, Fission, Haystack, 13 języków, 546 bajtów
Kiedy zobaczyłem odpowiedź na inne
101112 języków , musiałem dodać jeszczejedendwa3. Zastanawiam się też nad odrzuceniem Pytha, żeby zaoszczędzić na bajtach. (w tej chwili 162 z nich)Pyke: Wypróbuj tutaj!
rolls
Odpowiednia linia kodu:
Pyth: Wypróbuj tutaj!
gravy
Odpowiednia linia kodu:
Wszystko po
)
to, aby Pyth mógł go skompilować bez błędów przy braku danych wejściowych.Python 2:
corn
Wiersz 1 to cały komentarz
Wiersz 2 drukuje „kukurydzę”, a następnie ma komentarz
Wiersz 3 ma literał ciąg, a następnie komentarz
Linia 4 i następne to komentarze
Foo: Wypróbuj online!
biscuits
Foo drukuje wszystko zawarte w podwójnych cudzysłowach (
"
). W tym przypadku starałem się uwzględnić tylko te języki, które mogłyby poradzić sobie z innymi formami wprowadzania znaków (Specjalny przypadek dla Befunge). Jeśli po finale był jakikolwiek tekst"
, również zostałby wydrukowany.Brain ****: Wypróbuj online!
salad
Skopiowałem dane wyjściowe generatora ciągów stałych. Musiałem uciec od wszystkich
.
postaci,.q
aby grał z Pyth, aw.
więc z Pyke. Dodałem kilka dodatkowych-
znaków, aby komórki dotarły do właściwych punktów przed wydrukowaniem na innym.
znaku w 3. liniiGolfScript: Wypróbuj online!
cornbread
W GolfScript
#
jest komentarzem do końca linii.Co widzi interpreter GolfScript:
Z jakiegokolwiek powodu w GolfScript
print
pobiera ciąg i drukuje go bez nowej linii. Wystarczy mieć równieżbread
, aby go wydrukować.Właściwie: Wypróbuj online!
macandcheese
Odpowiednia linia:
<> <: Tylko kopiuj + wklej
turkey
Gol <> <: Wypróbuj online!
stuffing
Ponieważ <> <z wyjątkiem
`
pomija pierwszy'
i wyświetla tylko wystarczającą liczbę znaków do wydrukowaniastuffing
Poważnie: wypróbuj online!
macaroniandcheese
Odpowiednia linia:
Befunge: Wypróbuj online!
sweettea
Kod, który jest przeglądany
Rozszczepienie: Wypróbuj online!
dressing
Kod spojrzał na:
Z czego wykorzystywane są:
Haystack (2015) :
PECANPIE
(z nowymi wersjami EXTRA!)Z czego zrobić coś funkcjonalnego:
Konstruuję każdy kod ascii
PECANPIE
wielkimi literami dla wielkich liter, ponieważ wszystkie mają mniej niż 100. Następnie drukuję je wszystkie jako znaki.źródło
macaroni and cheese
możnamacaroniandcheese
cornrolls
? Tego nie było w menu ...CJam , 05AB1E , Dip , V , 4 języki,
3634 bajtów2 bajty zapisane dzięki @DrMcMoylex!
Oryginalny 36-bajtowy kod:
Po
&
i przedd
jest jeden<ESC>
, który ma 1 bajt. Tak więc kod z ujawnionymi znakami o zerowej szerokości wygląda następująco:CJam
(
<ESC>
nie pokazano)Wypróbuj online! wyjścia
turkey
05AB1E
(
<ESC>
nie pokazano)Wypróbuj online! wyjścia:
corn
V.
(
<ESC>
pokazano)Wypróbuj online! wypisuje nowy wiersz, po którym następuje
salad
Stoczek
(
<ESC>
nie pokazano)Wyjścia
gravy
Najlepszym sposobem na uruchomienie tego jest edycja pliku źródłowego, zmiana ostatniego wiersza w
dip.py
do
Pamiętaj, aby podać literę znaku ucieczki !. Teraz kod jest przekazywany do interpretera, aby mógł go zrozumieć (
"
trzeba tak uciec\"
). Teraz, jeśli uruchomisz go z wiersza poleceń, interpretuje rzeczywisty kod i wynikigravy
.źródło
pop "corn"
w objaśnieniuddi
naS
MATL / Golfscript / 05AB1E / CJam : 4 języki,
3433 bajtyTURKEY
.rolls
.corn
.cornbread
.źródło
tUrKEY
?C, sh, Python 3, Nim, Julia, Brainf ** k - 6 języków,
211209 bajtówJęzyki pozycji menu:
turkey
gravy
biscuits
rolls
salad
corn
Dodano Julię dzięki @kvill!
źródło
#include
(działa wgcc
). Zmień nazwęputs
println
wszędzie, z wyjątkiemmain()
wewnątrz, dodaj#=
powyżej multiliniczny otwieracz komentarzy Juliia='''
i zmień#*/
na# =##*/
.exit
i łącząc pojedynczy cytat z poprzednią linią (a=''''
).sh
wyda ostrzeżenia, ale jest to dozwolone AFAIU. Och,println[T](s:T)=echo"rolls"
pracuje dla Nima. Niezła odpowiedź ze wszystkimi moimi ulubionymi językami!ferNANDo /> <> / Gol> <> / 05AB1E / 2sable, 5 języków, 178 bajtów
turkey
salad
dressing
rolls
corn
źródło
Befunge-98 , > <> , V , Python 2 05AB1E , Gol> <> , Foo , Haystack (wersja 2015) , GolfScript BF, rozszczepienia , Minkolang 0,15 , poważnie , Axo : 14 języków 381 bajtów
To jest wspólna odpowiedź z BlueEyedBeast
Postanowiłem zastosować podejście 2D do tego pytania ... Tak, jest 7 esolangów 2D!
Inspiracją dla dodatkowych języków dodałem odpowiedź BlueEyedBeast (Foo, GolfScript)
<ESC>
jest dosłowną postacią Escape .Befunge-98
Wypróbuj online! wyjścia
corn
> <>
Polecenia są wyświetlane w kolejności, w jakiej się pojawiają
Wypróbuj online! (Tylko kopiuj i wklej)
sweettea
V.
Wypróbuj online! wyjścia
applepie
(uruchomienie może potrwać około 20 sekund)Python 2
Wypróbuj online! (Tylko kopiuj i wklej)
biscuits
05AB1E
Wypróbuj online! wyjścia
salad
Gol> <>
Polecenia są wyświetlane w kolejności, w jakiej się pojawiają
Wypróbuj online! wyjścia
turkey
bla
Foo wypisuje wszystko w podwójnych cudzysłowach, dlatego starałem się nie używać podwójnych cudzysłowów w innych językach. Ponieważ
"stuffing"
jest w cudzysłowie, zostanie wydrukowany.Wypróbuj online! wyprowadza,
stuffing
a następnie ma błądHaystack (2015)
Używa interpretera Haystacka 2015 (nie 2016), ponieważ nowsza wersja jest nieprawidłowa. Tłumacz na to jest
haystack.py
i niehaystack_new.py
Polecenia są wyświetlane w kolejności, w jakiej się pojawiają
Ten program generuje dane
i nowy wiersz po tym wyjściu (hej, białe znaki nie mają znaczenia!)
GolfScript
Wypróbuj online! wyjścia
pecanpie
BF
Użyłem https://copy.sh/brainfuck/text.html do konwersji tekstu na BF. Chociaż istnieje wiele
,
instrukcji wejściowych, kod BF działa niezależnie od niego.Wypróbuj online! wyjścia
gravy
Rozszczepienie
Aby rozpocząć program rozszczepienia, atom musi zostać spawnowany. Widzimy, że dzieje się to w trzeciej linii:
Wypróbuj online! wyjścia
cornbread
Minkolang v0.15
Wypróbuj online! wyjścia
applecider
Poważnie
Wypróbuj online! wyjścia
dressing
Axo
(Polecenia są wyświetlane w kolejności ich napotkania)
Wypróbuj online! wyjścia
pumpkinpie
źródło
$,,,,
zamiast, aby nie wyświetlał1
(bez zmiany bajtu), ale wtedy musiałbym zmienić wszystkie permalinki ... :)Pushy , Python i Brainfuck
To mój pierwszy poliglot, więc nie przejmuj się zbytnio ... Dla tych, którzy marudzą o liczbie bajtów, to 77 bajtów, ale dotyczy to tylko remisu.
Pushy drukuje „indyka” z wiodącym nowym wierszem (a także komunikat do
STDERR
):Python wypisuje „sos” , ponieważ pierwszy i ostatni wiersz są traktowane jako komentarze.
Brainfuck ignoruje wszystkie inne znaki, z wyjątkiem tych w ostatnim wierszu, które tworzą i drukują słowo „kukurydza” .
źródło
Pip , BF , oOo CODE , > <> , Befunge-93 ( implementacja Quirkster ), Ouroboros , /// : 7 języków, 175 bajtów
Pypeć
Wypróbuj online
Kilka wyrażeń, które są dyskretnie odrzucane (z których większość generuje ostrzeżenia, jeśli ostrzeżenia są włączone), z wyrażeniem
"sTufFINg"
na końcu, które jest drukowane.BF
Wypróbuj online
Wszystko oprócz
>-[--[<]>+>-]<.++++++++++++.+++.----.,,,,
komentarzy. Kod ten generuje99
(kod znakowyc
) najkrótszą sposobu wymienionego na esolangs.org , a następnie zmienia je nao
,r
in
. W,,,,
próbuje wejść czterech znaków, ale to nie ma wpływu na nic.oOo KOD
Wszystko oprócz liter jest ignorowane. Kody pogrupowane w trójki mają następujące brzmienie:
i tłumaczy na ten kod BF ( spróbuj użyć tłumacza Retina Martina ):
które wyjścia
rolls
. (I, co ciekawe, jest krótszy niż powyższy BF do generowaniacorn
, nawet z><
dodanym opcją, aby poprawnie ustawić linię wielkich liter.)> <>
Uruchom> kod <> tutaj
Ważna część kodu:
Adres IP jest odbijany w górę, zawija się i jest wysyłany w prawo.
"YVaRg"
wypycha kody znaków zgRaVY
.ooooo
wypisuje pięć liter i;
kończy program.Befunge-93
Kod zależy od nieokreślonego zachowania i prawdopodobnie działa tylko w tej implementacji .
Ważna część kodu:
/
to podział. Stos jest pusty, więc realizacja JavaScript Używam podziałów0
przez0
i popychaNaN
.'
jest nierozpoznaną postacią. Implementacja, której używam, dogodnie traktuje nierozpoznane znaki jako polecenia Reflect. (W przypadku wersji mniej zależnej od implementacji może być jedna możliwa zamiana1_
). Tak więc adres IP znów idzie w lewo, dzieliNaN
się0
(dostajeNaN
) i zawija na drugi koniec linii.Teraz
"yekRut"
(ruch RTL) wypycha kody znakówtuRkey
i,,,,,,
wysyła je. Wreszcie@
kończy program.Ouroboros
Wypróbuj tutaj
Każda linia kodu to „wąż”, który wykonuje się niezależnie.
Snake 1
Ponieważ nie ma instrukcji wyjściowych, jedyną ważną częścią kodu jest
f(
:f
wypycha15
i(
połyka tyle znaków z końca węża. Uważa się, że kod kończy się później.O
. Wykonanie trwa do końca węża i zapętla się z powrotem do początku. Za każdym razem wąż staje się coraz krótszy, aż w końcu(
zostaje połknięty. Ponieważ IP właśnie zostało zjedzone, wąż zatrzymuje egzekucję.Snake 2
"saLaD"
przesuwa kody znaków od końca do pierwszego;1/
dzieli kod znakówr
przez1
, pozostawiając go bez zmian, iooooo
wyświetla pięć znaków.;
upuszcza przedmiot (brak operacji, ponieważ stos jest już pusty).1(
połyka wskaźnik instrukcji i zatrzymuje się.Snake 3
"YVaRg"
wypycha niektóre znaki; następnie(
połyka liczbę znaków równą górze stosu, którym jest89
kod znakuY
. Zjedzenie 89 znaków wystarczy, aby połknąć adres IP i zatrzymać wykonywanie.///
Wypróbuj online, używając mojej implementacji Pip ///
/'//
usuwa wszystkie pojedyncze cudzysłowy z reszty programu (co nie robi nic, ponieważ nie ma żadnych). NastępniebisCuItS
wyjścia są takie, jakie są. Wreszcie, reszta kodu jest niepełnym podstawieniem - są tylko dwa z trzech wymaganych ukośników - więc nic nie robi.źródło
Cubix, Pushy, Brainfuck, V, Python 2 - 5 języków,
8985 bajtówMoja druga poliglota - niezbyt golfa, ale działa:
(uwaga, która
␛
reprezentuje dosłowny bajt ucieczkix1B
)corn
turkey
ROLLS
gravy
salad
Cubix
Przetestuj program online!
Cubix jest językiem autora wyzwania, ETHproductions. Interpreter Cubix odczytuje kod w następujący sposób:
Kod jest wykonywany w następujący sposób:
'salad
- wykonuje kilka nieistotnych operacji XOR na stosie, powoduje115, 0, 0
'#;
- wciśnij kod#
, a następnie ponownie go pop (no-op)"nroc"
- przesuń kody dla „kukurydzy”w
- przesuwa IP do pętli w następnej linii poniżej:!@o;
- wydrukuj i pop ostatni element (zakończ, jeśli element ma wartość 0)"-[--";;;;
- przesuń te znaki i usuń je (no-op){{
- brak opNatrętny
Przetestuj program online!
Pushy to mój własny język, który uruchamia kod w następujący sposób:
Brainfuck
Przetestuj program online!
Brainfuck ignoruje wszystkie znaki, których nie ma na liście instrukcji, w wyniku czego:
Które wydruki
ROLLS
. Zauważ, że wymaga to interpretera z zawijaniem komórek, takiego jak ten podany.V (język Vim)
Przetestuj program online!
V został stworzony przez DJMcMayhem, jednego z naszych najlepszych golfistów.
V to oparta na programie wersja edytora tekstowego Vim. Większość znaków przed
ESC
wpisem zostaje zapisana w „pliku”, ale␛ddgigravy
usuwa to wszystko i zamiast tego wstawia „sos”. Zawartość pliku na końcu programu jest drukowana.Python 2
Przetestuj program online!
Python jest jednym z moich ulubionych języków praktycznych. Ponieważ
#
jest to komentarz w Pythonie, większość programu jest ignorowana. Kod jest czytany w następujący sposób:źródło
'salad'#
rzeczywistości wypycha kods
, 0, 0 i kod#
, a następnie;
wyskakuje i pozostawia stos na115,0,0
.Python / QBasic / Pip , 3 języki, 41 bajtów
Więcej języków, ewentualnie TBA.
Pyton
1
to tylko wyrażenie, które zostaje odrzucone.#
zaczyna komentarz.print("turkey")
robi to, co mówi, i"salad"
jest kolejnym wyrażeniem, które zostaje odrzucone.QBasic
1#
jest numerem linii (podwójnej precyzji).print"corn"
robi to, co mówi.end
kończy program. Drugi wiersz jest poprawny pod względem składniowym, ale nigdy nie jest wykonywany.Pypeć
Większość wszystkiego to wyrażenia, które są odrzucane.
"corn":e
próbuje przypisać do dosłownego ciągu, który nie powiedzie się po cichu (chyba że ostrzeżenia są włączone)."salad"
jest ostatnim wyrażeniem w programie i dlatego jest drukowane.źródło
PHP, JavaScript i BrainF * ck, 178 bajtów
Pierwszy raz próbowałem Polyglota - nie zamierzam kłamać, jestem tutaj ponad głową ...
Gra w golfa:
(Nie odważyłem się napisać jedzenia w Święto Dziękczynienia w kodzie HTML i policzyć to jako inny język ...)
Wyjaśnienie:
Kod należy zapisać w pliku .php dla części PHP i JavaScript.
PHP:
Po uruchomieniu na serwerze PHP część kodu PHP jest czytana:
To daje:
JavaScript:
Możesz wywołać funkcję JavaScript
A()
z konsoli przeglądarki:To daje:
Brainf * cK
Część Brainf * ck jest ładnie ukryta w komentarzach w sekcji JavaScript, więc jest ignorowana przez części PHP i JavaScript:
Po wklejeniu całego pliku do IDE , to powoduje :
Nie mógłbym zrobić części Brainf * ck bez tej strony tekstowej do BF. Najpierw wygenerowałem kod dla „kukurydzy”, a następnie, próbując dowiedzieć się czegoś o tym szalonym języku, przekonwertowałem go na „sos”… a raczej „graVY” ...
źródło
Python, Clojure, JavaScript, Ruby: 4 języki, 113 bajtów
Dzięki @ Sp3000 za większość kodu. Zaskakujące, że nie musiałem nic robić z jego oryginałem, musiałem tylko przygotować kod Ruby.
źródło
///, SQL i JavaScript
Taka sama konstrukcja jak w przypadku innych poliglot zorientowanych na wakacje:
///
SQL
JavaScript
źródło
Clojure / Common Lisp / PicoLisp, 39 bajtów
Rodzina Lisp tutaj.
'()
w Clojure sprawdza się prawda, więc przechodzi do wyprowadzenia symboluturkey
. PicoLisp i Common Lisp przechodzą w fałszywą gałąź;""
jest prawdą w Common Lisp, a zatem wypisuje symbolrolls
, pusty łańcuch jest fałszywy w PicoLisp, więc przechodzi do drukowaniacorn
symbolu.Sprawdź to online:
https://ideone.com/OD65LB - Clojure
https://ideone.com/M1H5gf - Common Lisp
https://ideone.com/B4x3ns - PicoLisp
źródło
CJam, niedociążenie,> <>, 39 bajtów
Co widzi CJam
'v;
: Dosłowny znak, który jest natychmiast odrzucany"(Turkey)S";
: Literał łańcuchowy, który jest natychmiast odrzucany"Gravy"
: Wypycha ciągGravy
do stosu"\n'nroC'oooo;";
: Literał łańcuchowy, który jest natychmiast odrzucany.Pod koniec wykonywania stos jest wyprowadzany, co oznacza, że drukowany jest napis „Gravy”.
Co widzi niedociążenie
'v;"
: Niektóre nieprawidłowe polecenia, które są ignorowane(Turkey)S
: Wypycha ciąg „Turcja” i wysyła go";"Gr
: Niektóre nieprawidłowe polecenia, które są ignorowanea
: Powoduje to awarię segregatora interpretera TIO, ponieważ stos jest pusty. Wykonanie zostało zakończone.Co> <> widzi
'v;"(Turkey)S";"Gravy""
wypycha na stos kilka znaków (które są ignorowane). Adres IP następnie się zawija.v
wysyła adres IP w dół.>'nroC'oooo
wypycha znaki z ciągu „Kukurydza” i wysyła je.;
kończy wykonanie. Wszystkie pozostałe znaki są ignorowane.źródło