Thanksgiving di Amerika Serikat akan diadakan pada tanggal 24 November. Banyak orang akan makan malam besar bersama keluarga mereka, secara tradisional termasuk kalkun dan banyak lauk pauk. Ini biasanya berarti anggota keluarga harus mengoordinasikan siapa yang akan membawa masing-masing aneka hidangan. Dalam tantangan ini, tujuannya adalah untuk menulis polyglot yang menghasilkan hidangan berbeda di setiap bahasa yang digunakan.
Menu
(Dipilih dari Wikipedia . Jika tidak jelas, setiap baris adalah satu item.)
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
Aturan
- Setiap pengiriman harus berjalan dalam setidaknya 3 bahasa , yang masing-masing harus menampilkan item yang berbeda dari menu. Anda tidak dapat menggunakan beberapa versi dari bahasa yang sama (mis. Python 2 dan Python 3 tidak dapat digunakan dalam jawaban yang sama).
- Setiap entri harus memiliki byte yang sama di setiap bahasa pengkodean. Misalnya,
ɱ
byte0x1D
dalam pengkodean Jelly , yang sesuai dengan pengkodean¢
di 05AB1E . - Bahasa yang berbeda mungkin menggunakan metode keluaran yang berbeda, tetapi entri harus merupakan program lengkap dalam semua bahasa , dan ikuti salah satu metode IO standar yang diizinkan .
- Tidak ada program yang dapat mengambil input, tetapi program mana pun dapat mencetak ke STDERR atau melempar kesalahan waktu runtime / kompilasi dan peringatan selama output yang benar masih dicetak ke STDOUT atau file.
- Kasus dan spasi putih tidak masalah. Misalnya, output dari
GreenbeAN S
masih akan dihitung sebagaigreen beans
. - Karena hidangan utama dari setiap jamuan 1 Thanksgiving Amerika adalah kalkun, satu bahasa harus ditampilkan
turkey
(mengabaikan kasing dan spasi putih).
Mencetak gol
Kiriman yang menghasilkan keluaran unik dan valid dalam sebagian besar bahasa akan menang. Dalam kasus seri, entri terpendek dalam byte terikat menang.
1. Ya, kalkun bukan satu-satunya hidangan utama , tapi kita akan berpura-pura.
code-challenge
kolmogorov-complexity
polyglot
Produksi ETH
sumber
sumber
cornbread
Jawaban:
Pyke, Pyth, Python 2, Foo, Brain ****, GolfScript, Sebenarnya, <> <, Gol <> <, Serius, Befunge, Fission, Haystack, 13 bahasa, 546 byte
Ketika saya melihat yang lain
1011jawaban bahasa 12 , aku harus menambahkan tambahansatudua3. Saya juga serius mempertimbangkan menjatuhkan Pyth jika hanya untuk menghemat byte. (Saat ini 162 dari mereka)Pyke: Coba di sini!
rolls
Lepaskan baris kode:
Pyth: Coba di sini!
gravy
Lepaskan baris kode:
Semua
)
adalah untuk Pyth untuk membuatnya mengkompilasi tanpa kesalahan tanpa input.Python 2:
corn
Baris 1 adalah seluruh komentar
Baris 2 mencetak "jagung" dan kemudian memberikan komentar
Baris 3 memiliki string literal dan kemudian komentar
Baris 4 dan seterusnya adalah komentar
Foo: Cobalah Online!
biscuits
Foo mencetak semua yang terlampir dalam tanda kutip ganda (
"
). Dalam hal ini saya berhati-hati untuk hanya memasukkan bahasa yang dapat mengatasi bentuk input string lainnya (Kasus khusus untuk Befunge). Jika ada teks setelah final"
, itu akan dicetak juga.Otak ****: Cobalah Online!
salad
Saya menyalin output dari generator string konstan. Saya harus melarikan diri semua
.
karakter dengan.q
sehingga akan bermain dengan Pyth danw.
itu akan bermain dengan Pyke. Saya menambahkan beberapa-
karakter tambahan sehingga sel-sel akan sampai ke titik yang tepat sebelum mencetak pada.
karakter lain di baris ke-3GolfScript: Cobalah Online!
cornbread
Dalam GolfScript,
#
adalah komentar hingga akhir baris.Apa yang dilihat oleh penerjemah GolfScript:
Dalam GolfScript, untuk alasan apa pun,
print
mengambil string dan mencetaknya tanpa baris baru. Hanya memilikibread
cukup untuk mencetaknya juga.Sebenarnya: Coba Online!
macandcheese
Baris yang relevan:
<> <: Salin + Tempel saja
turkey
Gol <> <: Cobalah Online!
stuffing
Sebagai <> <kecuali
`
melompati karakter pertama'
dan hanya menghasilkan cukup karakter untuk dicetakstuffing
Serius: Cobalah Online!
macaroniandcheese
Baris yang relevan:
Befunge: Cobalah Online!
sweettea
Kode yang dilihat
Fission: Cobalah Online!
dressing
Kode memandang:
Dari yang digunakan:
Haystack (2015) :
PECANPIE
(dengan baris baru EXTRA!)Yang melakukan sesuatu yang fungsional:
Saya membangun setiap huruf besar ascii codepoint untuk huruf
PECANPIE
dalam huruf besar karena semuanya di bawah 100. Saya kemudian mencetak semuanya sebagai karakter.sumber
macaroni and cheese
bisa berupa keluaran sebagaimacaroniandcheese
)cornrolls
? Itu tidak ada dalam menu ...CJam , 05AB1E , Dip , V , 4 bahasa,
3634 byte2 byte disimpan berkat @DrMcMoylex!
Kode 36 byte asli:
Setelah
&
dan sebelumd
ada<ESC>
, yaitu 1 byte. Jadi kode dengan karakter nol-lebar yang terungkap terlihat seperti ini:CJam
(
<ESC>
tidak ditampilkan)Cobalah online! output
turkey
05AB1E
(
<ESC>
tidak ditampilkan)Cobalah online! output:
corn
V
(
<ESC>
ditunjukkan)Cobalah online! menampilkan baris baru diikuti oleh
salad
Menukik
(
<ESC>
tidak ditampilkan)Keluaran
gravy
Cara terbaik untuk menjalankan ini adalah dengan mengedit file sumber, ubah baris terakhir di
dip.py
untuk
Pastikan untuk memasukkan karakter pelarian literal !. Sekarang kode seperti itu dilewatkan ke interpreter sehingga dapat memahaminya (
"
harus diloloskan seperti\"
itu). Sekarang jika Anda menjalankannya dari command-line, itu mengartikan kode aktual dan outputgravy
.sumber
pop "corn"
dalam penjelasannyaddi
keS
MATL / Golfscript / 05AB1E / CJam : 4 bahasa,
3433 byteTURKEY
.rolls
.corn
.cornbread
.sumber
tUrKEY
?C, sh, Python 3, Nim, Julia, Brainf ** k - 6 bahasa,
211209 byteBahasa ke item menu:
turkey
gravy
biscuits
rolls
salad
corn
Menambahkan Julia berkat @kvill!
sumber
#include
(berfungsigcc
). Ganti nama diputs
println
mana-mana kecuali dimain()
, tambahkan pembuka komentar multiline julia di#=
atasa='''
dan ubah#*/
menjadi# =##*/
.exit
dan bergabung dengan kutipan tunggal ke baris sebelumnya (a=''''
).sh
akan mengeluarkan peringatan tetapi ini diizinkan AFAIU. Dan oh,println[T](s:T)=echo"rolls"
bekerja untuk Nim. Jawaban yang bagus dengan gabungan semua bahasa favorit saya!ferNANDo /> <> / Gol> <> / 05AB1E / 2sable, 5 bahasa, 178 byte
turkey
salad
dressing
rolls
corn
sumber
Befunge-98 , > <> , V , Python 2, 05AB1E , Gol> <> , Foo , Haystack (versi 2015) , GolfScript , BF, Fission , Minkolang 0.15 , Serius , Axo : 14 bahasa, 381 byte
Ini adalah jawaban kolaboratif dengan BlueEyedBeast
Saya memutuskan untuk melakukan pendekatan 2D untuk pertanyaan ini ... Ya, ada 7 esolang 2D!
Saya telah mengambil inspirasi untuk bahasa tambahan untuk ditambahkan oleh jawaban BlueEyedBeast (Foo, GolfScript)
<ESC>
adalah karakter literal untuk Escape .Befunge-98
Cobalah online! output
corn
> <>
Perintah ditampilkan dalam urutan muncul
Cobalah online! (Salin dan Tempel saja) keluaran
sweettea
V
Cobalah online! output
applepie
(mungkin perlu waktu ˜20 detik untuk menjalankannya)Python 2
Cobalah online! (Salin dan Tempel saja) keluaran
biscuits
05AB1E
Cobalah online! output
salad
Gol> <>
Perintah ditampilkan dalam urutan muncul
Cobalah online! output
turkey
Foo
Foo mengeluarkan apa pun dalam tanda kutip ganda, itulah sebabnya saya berhati-hati untuk tidak menggunakan tanda kutip ganda dalam bahasa lain. Karena
"stuffing"
dalam tanda kutip ganda, itu akan dicetak.Cobalah online! output
stuffing
dan kemudian memiliki kesalahanHaystack (2015)
Ini menggunakan penerjemah Haystack 2015 (bukan 2016) karena versi yang lebih baru tidak valid. Penerjemah untuk ini adalah
haystack.py
dan tidakhaystack_new.py
Perintah ditampilkan dalam urutan muncul
Output program ini
dan baris baru setelah output ini (hei, spasi tidak masalah!)
GolfScript
Cobalah online! output
pecanpie
BF
Saya menggunakan https://copy.sh/brainfuck/text.html untuk mengubah teks menjadi BF. Meskipun ada banyak
,
pernyataan input, kode BF berjalan secara independen.Cobalah online! output
gravy
Pembelahan
Untuk memulai program Fisi, sebuah atom harus ditelurkan. Kami melihat ini terjadi pada baris ketiga:
Cobalah online! output
cornbread
Minkolang v0.15
Cobalah online! output
applecider
Serius
Cobalah online! output
dressing
Axo
(Perintah diperlihatkan urutan yang ditemui)
Cobalah online! output
pumpkinpie
sumber
$,,,,
bukan untuk tidak menghasilkan1
(tanpa mengubah bytecount), tapi kemudian saya harus mengubah semua permalinks ... :)Pushy , Python dan Brainfuck
Ini adalah polyglot pertama saya, jadi jangan terlalu keras pada saya ... Bagi mereka yang mengeluh tentang jumlah byte, itu 77 byte, tapi itu hanya relevan untuk tiebreak.
Pushy mencetak 'turkey' dengan baris baru terkemuka (serta pesan ke
STDERR
):Python mencetak 'gravy' , sebagai baris pertama dan terakhir diperlakukan sebagai komentar.
Brainfuck mengabaikan semua karakter lain dan kecuali karakter yang ada di baris terakhir, yang membuat dan mencetak kata 'jagung' .
sumber
Pip , BF , oOo CODE , > <> , Befunge-93 ( Implementasi quirkster ), Ouroboros , /// : 7 bahasa, 175 byte
Pip
Cobalah online
Banyak ekspresi yang dibuang secara diam-diam (sebagian besar menghasilkan peringatan, jika peringatan diaktifkan), dengan ekspresi
"sTufFINg"
di bagian akhir yang akan dicetak.BF
Cobalah online
Semuanya kecuali
>-[--[<]>+>-]<.++++++++++++.+++.----.,,,,
komentar. Kode ini menghasilkan99
(kode karakter untukc
) melalui metode terpendek terdaftar di esolangs.org , kemudian memodifikasi untuko
,r
, dann
. The,,,,
mencoba untuk memasukkan empat karakter, tapi itu tidak berpengaruh apa-apa.KODE OOo
Semuanya kecuali huruf diabaikan. Mengelompokkan huruf menjadi tiga, kode berbunyi seperti ini:
dan terjemahkan ke kode BF ini ( coba gunakan penerjemah Martin Retina ):
output
rolls
yang mana . (Dan, yang cukup menarik, lebih pendek dari BF di atas untuk menghasilkancorn
, bahkan dengan><
no-op ditambahkan untuk membuat garis kapitalisasi sesuai dengan benar.)> <>
Jalankan> <> kode di sini
Bagian penting dari kode:
IP akan tercermin ke atas, membungkus, dan dikirim ke kanan.
"YVaRg"
mendorong kode karaktergRaVY
.ooooo
mengeluarkan lima huruf dan;
mengakhiri program.Befunge-93
Kode tergantung pada perilaku yang tidak terdefinisi dan mungkin hanya berfungsi dalam implementasi ini .
Bagian penting dari kode:
/
adalah pembagian. Tumpukan kosong, jadi implementasi JavaScript yang saya gunakan membagi0
dengan0
dan mendorongNaN
.'
adalah karakter yang tidak dikenal. Implementasi yang saya gunakan, dengan mudah, memperlakukan karakter yang tidak dikenal sebagai perintah Reflect. (Untuk versi yang tidak terlalu tergantung pada implementasi, satu penggantian yang mungkin adalah1_
.) Jadi IP pergi lagi, dibagiNaN
dengan0
(mendapatkanNaN
), dan membungkus ke ujung lain dari garis.Sekarang
"yekRut"
(memindahkan RTL) mendorong kode karaktertuRkey
dan,,,,,,
mengeluarkannya. Akhirnya,@
menghentikan program.Ouroboros
Coba di sini
Setiap baris kode adalah "ular" yang dieksekusi secara independen.
Ular 1
Karena tidak ada instruksi output, satu-satunya bagian penting dari kode adalah
f(
:f
mendorong15
dan(
menelan banyak karakter dari ujung ular. Kode sekarang dianggap berakhir setelah.O
. Eksekusi berlanjut sampai akhir ular dan loop kembali ke awal. Setiap kali lewat, ular semakin pendek, sampai akhirnya(
ditelan. Karena IP baru saja dimakan, ular menghentikan eksekusi.Ular 2
"saLaD"
mendorong kode karakternya terakhir-ke-pertama;1/
membagi karakterr
dengan1
, membiarkannya tidak berubah, danooooo
menghasilkan lima karakter.;
menjatuhkan item (no-op karena tumpukan sudah kosong).1(
menelan penunjuk instruksi dan berhenti.Ular 3
"YVaRg"
mendorong beberapa kode; kemudian(
menelan sejumlah karakter yang sama dengan bagian atas tumpukan, yang kebetulan merupakan89
kode karakterY
. Makan 89 karakter sudah cukup untuk menelan IP dan menghentikan eksekusi.///
Cobalah online menggunakan implementasi Pip saya ///
/'//
menghapus semua tanda kutip tunggal dari sisa program (yang tidak melakukan apa-apa karena tidak ada). Selanjutnya,bisCuItS
output apa adanya. Akhirnya, sisa kode adalah pengganti yang tidak lengkap - hanya ada dua dari tiga garis miring yang diperlukan - jadi tidak ada artinya.sumber
Cubix, Pushy, Brainfuck, V, Python 2 - 5 bahasa,
8985 bytePoliglot kedua saya - tidak terlalu golf, tetapi berfungsi:
(catatan yang
␛
mewakili byte pelarian literal,x1B
)corn
turkey
ROLLS
gravy
salad
Cubix
Uji program secara online!
Cubix adalah bahasa oleh penulis tantangan, ETHproductions. Cubix Interpreter membaca kode seperti ini:
Kode dijalankan seperti:
'salad
- Melakukan beberapa operasi XOR yang tidak relevan pada stack, menghasilkan115, 0, 0
'#;
- dorong kode sandi#
, lalu pop lagi (no-op)"nroc"
- dorong kode untuk "jagung"w
- Memindahkan IP ke loop pada baris berikutnya di bawah ini:!@o;
- cetak dan pop item terakhir (akhiri jika item 0)"-[--";;;;
- dorong karakter ini dan hapus (tidak ada op){{
- tidak ada opAmbisius
Uji program secara online!
Pushy adalah bahasa saya sendiri, dan menjalankan kode seperti ini:
Brainfuck
Uji program secara online!
Brainfuck mengabaikan semua karakter yang tidak ada dalam daftar instruksinya, menghasilkan:
Yang dicetak
ROLLS
. Perhatikan bahwa ini membutuhkan juru bahasa dengan sel pembungkus, seperti sel yang disediakan.V (Bahasa Vim)
Uji program secara online!
V dibuat oleh DJMcMayhem, salah satu pegolf kode teratas kami.
V adalah versi editor teks berbasis program Vim. Sebagian besar karakter sebelum
ESC
ditulis ke dalam "file", tetapi␛ddgigravy
menghapus semua itu dan memasukkan "saus" sebagai gantinya. Konten file di akhir program dicetak.Python 2
Uji program secara online!
Python adalah salah satu bahasa praktis favorit saya. Karena
#
merupakan komentar dalam Python, sebagian besar program diabaikan. Kode dibaca seperti ini:sumber
'salad'#
sebenarnya mendorong charcode daris
, 0, 0, dan charcode dari#
, lalu;
muncul dan meninggalkan tumpukan115,0,0
.Python / QBasic / Pip , 3 bahasa, 41 byte
Lebih banyak bahasa mungkin TBA.
Python
1
hanyalah sebuah ekspresi yang dibuang.#
memulai komentar.print("turkey")
melakukan apa yang dikatakannya, dan"salad"
merupakan ekspresi lain yang dibuang.QBasic
1#
adalah nomor baris (presisi ganda).print"corn"
melakukan apa yang dikatakannya.end
mengakhiri program. Baris kedua secara sintaksis valid tetapi tidak pernah dieksekusi.Pip
Kebanyakan semuanya adalah ekspresi yang dibuang.
"corn":e
mencoba untuk menetapkan string literal, yang gagal diam-diam (kecuali peringatan diaktifkan)."salad"
adalah ekspresi terakhir dalam program dan karenanya dicetak.sumber
PHP, JavaScript, dan BrainF * ck, 178 Bytes
Pertama kali saya mencoba Polyglot - tidak akan berbohong, saya berada di atas kepala saya di sini ...
Golf:
(Saya tidak berani menulis makanan Thanksgiving dalam kode HTML dan menganggapnya sebagai bahasa lain ...)
Penjelasan:
Kode harus disimpan ke dalam file .php untuk bagian PHP dan JavaScript.
PHP:
Ketika dijalankan pada server PHP, bagian kode PHP dibaca:
Output ini:
JavaScript:
Anda dapat memanggil
A()
fungsi JavaScript dari konsol browser:Output ini:
Brainf * cK
Bagian Brainf * ck disembunyikan dengan baik di komentar di bagian JavaScript, sehingga diabaikan oleh bagian PHP dan JavaScript:
Ketika seluruh file disisipkan ke dalam IDE , ini menghasilkan:
Saya tidak bisa melakukan Brainf * bagian ck tanpa ini situs text-to-BF. Saya awalnya mendapatkannya untuk menghasilkan kode untuk "jagung" dan kemudian dalam upaya untuk belajar sesuatu tentang bahasa gila ini, saya mengubahnya menjadi "saus" ... atau lebih tepatnya "graVY" ...
sumber
Python, Clojure, Javascript, Ruby: 4 bahasa, 113 byte
Terima kasih kepada @ Sp3000 untuk sebagian besar kode. Anehnya, saya bahkan tidak perlu melakukan apa pun dengan aslinya, saya hanya perlu menambahkan kode Ruby.
sumber
///, SQL dan JavaScript
Konstruksi yang sama dengan polyglot berorientasi liburan lainnya:
///
SQL
Javascript
sumber
Clojure / Common Lisp / PicoLisp, 39 byte
Gila keluarga di sini.
'()
mengevaluasi ke true di Clojure sehingga mulai menghasilkan simbolturkey
. PicoLisp dan Common Lisp masuk ke cabang palsu;""
benar dalam Common Lisp dan dengan demikian mencetak simbolrolls
, string kosong adalah salah dalam PicoLisp dan begitulah yang terjadi padacorn
simbol pencetakan .Periksa secara online:
https://ideone.com/OD65LB - Clojure
https://ideone.com/M1H5gf - Common Lisp
https://ideone.com/B4x3ns - PicoLisp
sumber
CJam, Underload,> <>, 39 byte
Apa yang dilihat CJam
'v;
: Karakter literal yang segera dibuang"(Turkey)S";
: String literal yang segera dibuang"Gravy"
: Dorong stringGravy
ke tumpukan"\n'nroC'oooo;";
: String literal yang segera dibuang.Pada akhir eksekusi, stack adalah output, yang berarti bahwa "Gravy" dicetak.
Apa yang dilihat Underload
'v;"
: Beberapa perintah tidak valid yang diabaikan(Turkey)S
: Menekan string "Turki" dan mengeluarkannya";"Gr
: Beberapa perintah tidak valid yang diabaikana
: Ini menyebabkan segfault pada penerjemah TIO karena tumpukan kosong. Eksekusi dihentikan.Apa> <> lihat
'v;"(Turkey)S";"Gravy""
mendorong sekelompok karakter ke tumpukan (yang diabaikan). IP kemudian membungkus kembali.v
mengirim IP ke bawah.>'nroC'oooo
mendorong karakter dalam string "Corn" dan mengeluarkannya.;
mengakhiri eksekusi. Semua karakter lain diabaikan.sumber