День благодарения в Соединенных Штатах приближается 24 ноября. Многие люди будут обедать со своими семьями, традиционно включая индейку и множество гарниров. Обычно это означает, что члены семьи должны координировать, кто принесет каждое из различных блюд. В этой задаче цель состоит в том, чтобы написать полиглот, который выводит разные блюда на каждом языке, на котором он работает.
Меню
(Выбрано из Википедии . Если это не очевидно, каждая строка представляет собой один элемент.)
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
правила
- Каждая отправка должна выполняться не менее чем на 3 языках , каждый из которых должен выводить отдельный элемент из меню. Вы не можете использовать несколько версий одного и того же языка (например, Python 2 и Python 3 не могут использоваться в одном и том же ответе).
- Каждая запись должна иметь одинаковые байты в кодировке каждого языка. Например,
ɱ
это байт0x1D
в кодировке Jelly в , что соответствует¢
в кодировке 05AB1E в . - Разные языки могут использовать разные методы вывода, но записи должны быть полными программами на всех языках и следовать одному из наших разрешенных методов ввода-вывода по умолчанию .
- Никакие программы не могут принимать ввод, но любая из программ может печатать в STDERR или генерировать ошибки и предупреждения времени выполнения / компиляции, если правильный вывод все еще печатается в STDOUT или файл.
- Случай и пробелы не имеют значения. Например, вывод
GreenbeAN S
все равно будет считатьсяgreen beans
. - Поскольку центральное блюдо каждого 1 американского блюда на День благодарения - индейка, должен выводиться один язык
turkey
(игнорируя регистр и пробелы).
счет
Представление, которое дает уникальные действительные результаты на большинстве языков, выигрывает. В случае ничьей побеждает самая короткая из связанных записей в байтах.
1. Да, индейка - не единственное основное блюдо , но мы собираемся притвориться, что оно есть.
code-challenge
kolmogorov-complexity
polyglot
ETHproductions
источник
источник
cornbread
Ответы:
Pyke, Pyth, Python 2, Foo, Brain ****, GolfScript, на самом деле, <> <, Gol <> <, серьезно, Befunge, Fission, Haystack, 13 языков, 546 байт
Когда я увидел другой
101112 языковой ответ , мне пришлось добавить ещеодиндва3. Я также серьезно думаю об отбрасывании Pyth, чтобы сэкономить на байтах. (на данный момент 162 из них)Пайк: Попробуй здесь!
rolls
Удалить строку кода:
Pyth: Попробуй здесь!
gravy
Удалить строку кода:
Все
)
это для Pyth, чтобы он компилировался без ошибок при отсутствии ввода.Python 2:
corn
Строка 1 - это целый комментарий
Строка 2 печатает «кукуруза», а затем имеет комментарий
Строка 3 имеет строковый литерал, а затем комментарий
Строка 4 и далее являются комментариями
Foo: попробуйте онлайн!
biscuits
Foo выводит все, что заключено в двойные кавычки (
"
). В этом случае я старался включать только языки, которые могли бы справляться с другими формами ввода строк (особый случай для Befunge). Если бы после финала был какой-то текст"
, он бы тоже был напечатан.Мозг ****: Попробуйте онлайн!
salad
Я скопировал вывод генератора постоянной строки. Мне пришлось убежать от всех
.
персонажей,.q
чтобы он играл с Пифом иw.
с Пайком. Я добавил несколько дополнительных-
символов, чтобы ячейки попадали в нужные точки перед печатью другого.
символа в 3-й строке.GolfScript: попробуйте онлайн!
cornbread
В GolfScript
#
это комментарий до конца строки.Что видит интерпретатор GolfScript:
В GolfScript по какой-либо причине
print
берет строку и печатает ее без перевода строки. Достаточно простоbread
напечатать его.На самом деле: попробуйте онлайн!
macandcheese
Соответствующая строка:
<> <: Копировать + Вставить только
turkey
Gol <> <: Попробуйте онлайн!
stuffing
Как <> <кроме
`
пропуска первого'
и выводит только достаточно символов для печатиstuffing
Серьезно: попробуйте онлайн!
macaroniandcheese
Соответствующая строка:
Befunge: попробуйте онлайн!
sweettea
Код, на который смотрят
Деление: попробуйте онлайн!
dressing
Код смотрел на:
Из них используются:
Стог сена (2015) :
PECANPIE
(с ДОПОЛНИТЕЛЬНЫМИ новыми строками!)Из чего делают что-то функциональное:
Я строю каждую кодовую точку ascii в верхнем регистре для букв в
PECANPIE
верхнем регистре, потому что все они меньше 100. Затем я печатаю их все в виде символов.источник
macaroni and cheese
можно вывести какmacaroniandcheese
)cornrolls
? Этого не было в меню ...CJam , 05AB1E , Dip , V , 4 языка,
3634 байта2 байта сохранены благодаря @DrMcMoylex!
Оригинальный 36-байтовый код:
После
&
и передd
есть<ESC>
, что составляет 1 байт. Таким образом, код с раскрытыми символами нулевой ширины выглядит следующим образом:CJam
(
<ESC>
не показано)Попробуйте онлайн! выходы
turkey
05AB1E
(
<ESC>
не показано)Попробуйте онлайн! выходы:
corn
В
(
<ESC>
показано)Попробуйте онлайн! выводит новую строку с последующим
salad
наклонение
(
<ESC>
не показано)Выходы
gravy
Лучший способ выполнить это - отредактировать исходный файл, изменить последнюю строку в
dip.py
в
Не забудьте включить литерал escape-символа !. Теперь код в том виде, как он есть, передается в интерпретатор, чтобы он мог его понять (
"
его нужно экранировать\"
так). Теперь, если вы запустите его из командной строки, он интерпретирует фактический код и выводgravy
.источник
pop "corn"
объяснениеddi
наS
MATL / Golfscript / 05AB1E / CJam : 4 языка,
3433 байтаTURKEY
.rolls
.corn
.cornbread
.источник
tUrKEY
?C, sh, Python 3, Nim, Julia, Brainf ** k - 6 языков,
211209 байтЯзыки для пунктов меню:
turkey
gravy
biscuits
rolls
salad
corn
Добавила Джулия благодаря @kvill!
источник
#include
(работает вgcc
). Переименуйтеputs
println
везде, кроме как вmain()
, добавьте открыватель многострочных комментариев Джулии#=
вышеa='''
и измените#*/
на# =##*/
.exit
и добавив одинарную кавычку к предыдущей строке (a=''''
).sh
будет выдавать предупреждения, но это разрешено AFAIU. Иprintln[T](s:T)=echo"rolls"
работает на Нима. Хороший ответ со всеми моими любимыми языками вместе взятыми!ferNANDo /> <> / Gol> <> / 05AB1E / 2sable, 5 языков, 178 байт
turkey
salad
dressing
rolls
corn
источник
Befunge-98 , > <> , V , Python 2, 05AB1E , Gol> <> , Foo , Haystack (версия 2015 года) , GolfScript , BF, Fission , Minkolang 0.15 , серьезно , Axo : 14 языков, 381 байт
Это совместный ответ с BlueEyedBeast
Я решил сделать 2D подход к этому вопросу ... Да, есть 7 2D esolangs!
Я черпал вдохновение в добавлении дополнительных языков ответом BlueEyedBeast (Foo, GolfScript)
<ESC>
символьный литерал для Escape .Befunge-98
Попробуйте онлайн! выходы
corn
> <>
Команды отображаются в порядке их появления
Попробуйте онлайн! (Только копирование и вставка) выходы
sweettea
В
Попробуйте онлайн! выходные данные
applepie
(для его запуска может потребоваться ~ 20 секунд)Python 2
Попробуйте онлайн! (Только копирование и вставка) выходы
biscuits
05AB1E
Попробуйте онлайн! выходы
salad
Gol> <>
Команды отображаются в порядке их появления
Попробуйте онлайн! выходы
turkey
Foo
Foo выводит все что угодно в двойных кавычках, поэтому я старался не использовать двойные кавычки на других языках. Поскольку
"stuffing"
в двойных кавычках, он будет напечатан.Попробуйте онлайн! выводит,
stuffing
а затем имеет ошибкуСтог сена (2015)
При этом используется интерпретатор Haystack 2015 (не 2016), поскольку более новая версия недействительна. Переводчик для этого есть,
haystack.py
а неhaystack_new.py
Команды отображаются в порядке их появления
Эта программа выводит
и символ новой строки после этого вывода (эй, пробел не имеет значения!)
GolfScript
Попробуйте онлайн! выходы
pecanpie
BF
Я использовал https://copy.sh/brainfuck/text.html для преобразования текста в BF. Хотя существует много
,
входных операторов, код BF выполняется независимо от него.Попробуйте онлайн! выходы
gravy
расщепление
Чтобы начать программу деления, должен быть создан атом. Мы видим, что это происходит в третьей строке:
Попробуйте онлайн! выходы
cornbread
Минколанг v0.15
Попробуйте онлайн! выходы
applecider
Шутки в сторону
Попробуйте онлайн! выходы
dressing
Axo
(Команды показаны в порядке их появления)
Попробуйте онлайн! выходы
pumpkinpie
источник
$,,,,
вместо него не выводить1
(без изменения байтового счета), но тогда мне пришлось бы изменить все постоянные ссылки ... :)Напористый , Python и Brainfuck
Это мой первый полиглот, так что не переживай из-за меня ... Для тех, кто скулил по поводу количества байтов, это 77 байтов, но это актуально только для тай-брейка.
Напористый печатает «индейку» с ведущей новой строкой (а также с сообщением
STDERR
):Питон печатает "соус" , так как первая и последняя строки рассматриваются как комментарии.
Brainfuck игнорирует все остальные символы, кроме тех, которые находятся в последней строке, которые создают и печатают слово «кукуруза» .
источник
Pip , BF , oOo CODE , > <> , Befunge-93 ( реализация Quirkster ), Уроборос , /// : 7 языков, 175 байт
зернышко
Попробуйте онлайн
Группа выражений, которые молча отбрасываются (большинство из которых генерируют предупреждения, если предупреждения включены), с выражением
"sTufFINg"
в конце, которое печатается.BF
Попробуйте онлайн
Все, кроме
>-[--[<]>+>-]<.++++++++++++.+++.----.,,,,
комментариев. Этот код генерирует99
(код символа дляc
) по кратчайшему способу , указанному на esolangs.org , затем изменяет егоo
,r
иn
.,,,,
Пытается ввода четырех символов, но это ничего не влияет.ооо код
Все, кроме букв, игнорируется. Сгруппировав буквы в тройки, коды выглядят так:
и переводит в этот код BF ( попробуйте его с помощью переводчика Retina Мартина ):
какие выводы
rolls
. (И, что интересно, короче, чем вышеупомянутый BF для выводаcorn
, даже с><
no-op для правильного выравнивания капитализации.)> <>
Выполнить> <> код здесь
Важная часть кода:
IP отражается вверх, оборачивается и отправляется вправо.
"YVaRg"
толкает коды символовgRaVY
.ooooo
выводит пять букв и;
завершает программу.Befunge-93
Код зависит от неопределенного поведения и, вероятно, работает только в этой реализации .
Важная часть кода:
/
это разделение. Стек пуст, поэтому реализация JavaScript, которую я использую, делит0
на0
и толкаетNaN
.'
это непризнанный персонаж Реализация, которую я использую, удобно обрабатывать нераспознанные символы как команды Reflect. (Для менее зависимой от реализации версии возможной заменой будет1_
.) Таким образом, IP снова уходит влево, делитсяNaN
на0
(получаяNaN
) и переносится на другой конец строки.Теперь
"yekRut"
(перемещение RTL) выдвигает коды символовtuRkey
и,,,,,,
выводит их. Наконец,@
завершает программу.Уроборос
Попробуй здесь
Каждая строка кода представляет собой «змею», которая выполняется независимо.
Змея 1
Поскольку нет никаких инструкций вывода, единственная важная часть кода
f(
:f
толкает15
и(
глотает столько символов с конца змеи. Код считается оконченным после.O
. Казнь продолжается до конца змеи и возвращается к началу. Каждый раз, когда змея становится короче, пока в конце концов(
не проглотит. Так как IP только что съели, змея останавливает выполнение.Змея 2
"saLaD"
выдвигает свои коды символов в последнюю очередь;1/
делит кодr
на1
, оставляя его без изменений, иooooo
выводит пять символов.;
отбрасывает предмет (без операции, потому что стек уже пуст).1(
глотает указатель инструкции и останавливается.Змея 3
"YVaRg"
толкает несколько кодов; затем(
глотает количество символов, равное вершине стека, что, как оказалось89
, код символаY
. Еды 89 символов достаточно, чтобы проглотить IP и остановить выполнение.///
Попробуйте онлайн, используя мою реализацию Pip ///
/'//
удаляет все одинарные кавычки из остальной части программы (которая ничего не делает, потому что их нет). ДалееbisCuItS
выводит как есть. Наконец, остальная часть кода является неполной заменой - есть только два из трех обязательных слешей - поэтому она ничего не делает.источник
Cubix, Pushy, Brainfuck, V, Python 2 - 5 языков,
8985 байтовМой второй полиглот - не очень удачный, но он работает:
(обратите внимание, что
␛
представляет буквальный escape-байт,x1B
)corn
turkey
ROLLS
gravy
salad
Cubix
Протестируйте программу онлайн!
Cubix - это язык автора конкурса, ETHproductions. Интерпретатор Cubix читает код следующим образом:
Код выполняется так:
'salad
- выполняет некоторые не относящиеся к операции XOR над стеком, приводит к115, 0, 0
'#;
- нажмите на код#
, затем вставьте его снова (без операции)"nroc"
- нажать на коды для "кукурузы"w
- перемещает IP для зацикливания на следующую строку ниже:!@o;
- распечатать и вытолкнуть последний элемент (завершить, если элемент равен 0)"-[--";;;;
- нажмите эти символы и удалите их (без операции){{
- без операцииНапористый
Протестируйте программу онлайн!
Pushy - мой родной язык, и он запускает такой код:
Brainfuck
Протестируйте программу онлайн!
Brainfuck игнорирует все символы, которых нет в списке инструкций, в результате чего:
Который печатает
ROLLS
. Обратите внимание, что для этого требуется интерпретатор с переносящими ячейками, такими как предоставленная.V (Vim язык)
Протестируйте программу онлайн!
V был создан DJMcMayhem, одним из наших лучших код-гольфистов.
V является программной версией текстового редактора Vim. Большинство символов перед
ESC
записью записывается в «файл», но␛ddgigravy
удаляет все это и вместо этого вставляет «соус». Содержимое файла в конце программы печатается.Python 2
Протестируйте программу онлайн!
Python - один из моих любимых практических языков. Поскольку
#
это комментарий в Python, большая часть программы игнорируется. Код читается так:источник
'salad'#
самом деле толкает код chars
, 0, 0 и код char of#
, затем;
выскакивает и покидает стек в115,0,0
.Python / QBasic / Pip , 3 языка, 41 байт
Больше языков возможно TBA.
питон
1
это просто выражение, которое отбрасывается.#
начинает комментарийprint("turkey")
делает то, что говорит, и"salad"
другое выражение, которое отбрасывается.QBasic
1#
это номер строки (двойной точности).print"corn"
делает то, что говорит.end
завершает программу Вторая строка синтаксически допустима, но никогда не выполняется.зернышко
Большинство всего - выражения, которые отбрасываются.
"corn":e
пытается присвоить литеральной строке, которая молча терпит неудачу (если предупреждения не включены)."salad"
является последним выражением в программе и, следовательно, печатается.источник
PHP, JavaScript и BrainF * ck, 178 байт
Впервые я попробовал Полиглот - не собираюсь лгать, я здесь над головой ...
Golfed:
(Я не осмелился написать еду на День Благодарения в HTML-коде и посчитать это другим языком ...)
Объяснение:
Код должен быть сохранен в файл .php для частей PHP и JavaScript.
PHP:
При запуске на PHP-сервере PHP-часть кода читается:
Это выводит:
JavaScript:
Вы можете вызвать
A()
функцию JavaScript из консоли браузера:Это выводит:
Brainf * ск
Часть Brainf * ck хорошо спрятана в комментариях в разделе JavaScript, поэтому она игнорируется частями PHP и JavaScript:
Когда весь файл вставляется в IDE , выводится:
Я не смог бы сделать часть Brainf * ck без этого сайта text-to-BF. Первоначально я получил его для генерации кода для «кукурузы», а затем, пытаясь что-то узнать об этом сумасшедшем языке, я преобразовал его в «соус» ... или, скорее, «GraVY» ...
источник
Python, Clojure, Javascript, Ruby: 4 языка, 113 байтов
Спасибо @ Sp3000 за большую часть кода. Удивительно, но мне даже не пришлось ничего делать с его оригиналом, мне просто нужно было добавить код на Ruby.
источник
///, SQL и JavaScript
Та же конструкция, что и у другого полиглота, ориентированного на отдых:
///
SQL
Javascript
источник
Clojure / Common Lisp / PicoLisp, 39 байт
Семья Лисп здесь.
'()
возвращает значение true в Clojure, поэтому он переходит к выводу символаturkey
. PicoLisp и Common Lisp переходят в ложную ветвь;""
верно в Common Lisp и поэтому печатает символrolls
, пустая строка - false в PicoLisp, поэтому он переходит к печатиcorn
символа.Проверьте это онлайн:
https://ideone.com/OD65LB - Clojure
https://ideone.com/M1H5gf - Common Lisp
https://ideone.com/B4x3ns - PicoLisp
источник
CJam, недогруз,> <>, 39 байт
Что видит CJam
'v;
: Символьный литерал, который немедленно отбрасывается"(Turkey)S";
: Строковый литерал, который немедленно отбрасывается"Gravy"
: Толкает строкуGravy
в стек"\n'nroC'oooo;";
: Строковый литерал, который немедленно отбрасывается.В конце выполнения стек выводится, что означает, что печатается «Соус».
Что видит Underload
'v;"
: Некоторые неверные команды, которые игнорируются(Turkey)S
: Толкает строку "Турция" и выводит ее";"Gr
: Некоторые неверные команды, которые игнорируютсяa
: Это вызывает segfault на интерпретаторе TIO, так как стек пуст. Исполнение прекращено.Что> <> видит
'v;"(Turkey)S";"Gravy""
выталкивает кучу символов в стек (которые игнорируются). IP тогда оборачивается.v
отправляет IP вниз.>'nroC'oooo
толкает символы в строку «Кукуруза» и выводит их.;
прекращает выполнение. Все остальные символы игнорируются.источник