После всего того веселья, которое у нас было с вызовами полиглотов в ( недавнем ) прошлом, как насчет задач, когда результат может быть на двух языках?
Ваш ответ должен принять логический ввод b
и вывод текста "true"
или "false"
. Тот же код должен выводить, при запуске на другом языке, "waar"
или "onwaar"
или любой другой перевод true
и false
.
вход
- Ввод - это четко различимая истина / ложь. Допустимы фактические значения T / F, бит, int или (пустая) строка.
- Входные данные должны быть одинаковыми для всех частей вашего представления.
Выход
Вывод может быть возвращен функцией, записан
STDOUT
, помещен во всплывающее окно, напечатан в 3D, отправлен по почте и т. Д.Выходные данные должны представлять состояние
b
. Таким образом, для «truey» необходимо вывести «true», «waar» ... и «falsey» должно привести к «false», «onwaar» и т. Д.Разные языки могут использовать разные методы вывода.
Используемые языки
Один из ваших выходов ДОЛЖЕН быть
"true"
и"false"
.Различные версии языков программирования считаются разными языками для этой задачи.
Различные диалекты человеческого языка считаются разными языками для этой задачи.
Вы можете расширить полиглот более чем на два языка программирования. Каждый язык программирования должен выводить отдельный человеческий язык.
Ответ с большинством языков будет объявлен победителем. При связывании считается byountount.
источник
"True"
и"False"
приемлемы вместо необходимых"true"
и"false"
?Ответы:
Dyalog APL ,
243237 байт : 14 языков, с возможностью расширения до 131 *-6 байт благодаря Соаку .
Требуется
⎕IO←0
по умолчанию во многих системах. Запрашивает ввод0
или1
.В зависимости от версии (с 9.0 по 16.0, с небольшими версиями) он выводит на английском, испанском, португальском, немецком, вьетнамском, французском, турецком, итальянском, польском, сунданском, филиппинском, йоруба, узбекском или румынском, хотя без диакритических знаков.
⎕AV⍳'ëáàÆÅÄòðÓÈÇ'
в индексах A ТОМИЧ V Ector (151 142 141 133 132 131 122 121 111 102 101 96)((
...)⍳
...)
найти позицию⍎
оцененный⎕D∩⍨
пересечение D igits и4↑
четыре * первых персонажа1⊃
второй элемент#⎕WG'APLVersion'
номер версии(
...)⊃
затем используйте это, чтобы выбрать среди⎕⊃
элемент input'th (0: первый; 1: второй)s¨
функция s (которую мы вскоре определим) применяется к каждому из⌽
обратная сторона(s←{
...})
s применяется к - где s определяется как1↓¨
первый персонаж выпал из каждого⍵⊂⍨
аргумент разделен где⍵=
символы аргумента равны⊃⍵
первый символ аргумента';,true,adevarat,
...,falsch',
эта строка предшествует18⍴',falso'
восемнадцать символов, взятых циклически из этой строки* Начиная с версии 12.1, номер версии включает номер сборки, поэтому, увеличив число символов, взятых из этой строки, легко охватить все 131 язык латинского алфавита .
источник
prawdziwy
наprawda
иfalszywy
наfalsz
. Более короткие формы лучше подходят здесь и дают лучший результат.6 языков, 169 байт
Ожидает
0\n
или1\n
как ввод, и печатает слова в:vals/waar
),faux/vrai
),false/true
),usant/sant
),usand/sand
),falso/vero
).источник
print
заявление!Все функции, 6 языков, 146 байт
💥 Теперь в 3D! 💥
Для ясности я разделил две плоскости кода, чтобы вы могли видеть, как они наслоены. На диске эти два блока будут разделены символом перевода формы в конце строки выше.
В правилах говорилось, что разные версии языка считаются отдельными языками, так что это шесть версий Funge / Befunge. :)
Благодаря Деннису все версии Befunge теперь можно тестировать онлайн на TIO . В настоящее время не существует работающих реализаций вариантов Unefunge и Trefunge, поэтому для них я бы порекомендовал Rc / Funge .
A
игнорируется в Befunge 93 и 96, но является командой About Face в 97 и не поддерживается в 98 и, следовательно, отражает. Это означает, что 93 и 96 следуютv
вниз, в то время как 97 и 98 переходят на противоположную сторону игрового поля.В Befunge 96 знак
;
пробела в начале строки помечает его как комментарий, поэтому строка пропускается, а интерпретатор переходит к>
третьей строке. В 93, однако, переводчик следует>
за второй строкой.Путь 97/98 продолжается в первой строке справа налево, пропуская секцию внутри
;
маркеров комментариев, соединяя&
команду, в конце концов достигая последовательности U-изгибаv<^<
. В Unefunge эти изменения направления не поддерживаются, поэтому интерпретатор меняет направление и выполняет ранее пропущенный раздел в комментариях. В Befunge / Trefunge это продолжается влево.В Befunge 97
m
команда не поддерживается и, следовательно, пропускается, поэтому переводчик продолжает выполнение по первой строке. В 98 он только для 3D, поэтому он отражается в Befunge (2D), и переводчик следуетv
справа от него до четвертой строки. В Trefunge (3D) это ветвь High-Low, которая переводит уровень вдоль оси z во вторую плоскость.Таким образом, кроме случая Unefunge, каждая версия собирает их строковую пару из отдельной строки, а затем направляется одной из
&
команд для получения пользовательского ввода. Затем эти пути кода сливаются воедино с помощью^
команд во втором столбце, направляя поток программы вверх через верхнюю часть игрового поля, снова оборачиваясь вниз.Наконец, у нас есть
^_^
последовательность, которая решает, какой путь выбрать, основываясь на вводе пользователем. Если 0 , мы идем прямо к выходной последовательности (>:#,_
), записывая ложную строку. Если 1 , мы сначала выполняем,>_
который очищает первую строку от стека, и таким образом выводит истинную строку.источник
5 языков, 249 байт
Примечание:
\r
и\e
являются буквальными символами перевода строки и escape-символами, но\x5b
должны быть как есть, в противном случае Ruby жалуется на класс символов в регулярном выражении.Немного опоздал на вечеринку и ни в коем случае не победитель, но я начал работать над полиглотом для соревнования по благодарению и почувствовал, что может быть немного поздно, поэтому превратил его в это!
объяснение
Python:
True
/False
Здесь мы устанавливаем
q
на0//1
что0
, то есть'''
строка , которая содержит большую часть другого кода, хранить массив , содержащимFalse
иTrue
и indicies0
и ,1
соответственно, назначить вкладb
(который должен быть0
или1
для обозначенияFalsy
иTruthy
) , тоprint
вb
й индексеa
, показывающиеFalse
илиTrue
.Рубин:
Vrai
/Faux
Как и в сценарии Python, мы устанавливаем переменную
q
, но в Ruby это значение равно0 / /1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord
, поскольку Ruby разбивает его на0/
«деление на ноль», а на следующее/
- «начало литерала регулярного выражения». Используя этот литерал, я могу скрыть код PHP и начать работу с Python'''
. Мы должны добавить,.to_s.ord
потому что правильный операнд/
должен бытьFixnum
. После этого мы определяем функциюinput()
и переменнуюTrue
иFalse
должны содержать их французские аналоги и, наконец, начинаем строку,'
которая продолжается на следующей строке. Наконец, мы создаем массив,a
который содержит"Vrai"
и,"Faux"
и выбираем их, используяinput()
номер ed0
или1
.Perl:
Waar
/Vals
В Perl, то
q=..=
,q+...+
иq-...-
блоки цитируются литералы , используя необычные разделители, в коде выше я заменил их с'...'
. Большая часть кода содержится в буквальной строке, но мы определяемsub a
(который содержит<><
!), Который проверяет,STDIN
меньше ли1
, возвращая либоWaar
или, либоVals
.print(a[b])
Фактическиprint
S результат вызова методаsub
a
с и аргументом ,[b]
который является ссылкой на массив , который содержит голое словоb
.JavaScript:
Vero
/Falso
Первая строка в основном закомментирована разделением
0//1
(//
это комментарий строки в JavaScript), поэтому мы просто установилиq
на0
. Следующая строка имеет дело с отображением функций JS на их имена Python и установкой переменных,True
а такжеFalse
для того, чтобы они были итальянскими строками. Наконец, мы выполняем то же самое, что и код Ruby, устанавливая для массива итальянских слов и выбирая с помощьюinput
of0
или1
.PHP:
Ekte
/Falsk
Поскольку PHP выполняет код только между
<?...?>
всеми остальными, выводится как есть, поэтому наш код здесь просто печатает перевод строки (чтобы вернуть нас в начало текущей строки) и escape-последовательность ANSI, чтобы очистить до конца текущего строка, за которой следует либо,Ekte
либо вFalsk
зависимости от того, является ли введенный символ (0
или1
) истинным или ложным.источник
Pyth, Python - 28 байт
источник
.q
и добавив;
в конце.C #, Java, 104 байта
Golfed:
Ungolfed:
Тестовое задание:
C #
Джава
Объяснение:
При вызове
ToString()
илиtoString()
логического значения в C # и Java соответственно, C # печатает строку с заглавной первой буквойTrue
иFalse
, но Java печатает все в нижнем регистреtrue
иfalse
.источник
2 языка, 60 байтов
Языки:
true
false
waar
onwaar
Примечание: есть байты UTF-8, а не байты желе.
источник
Lua / JavaScript, 68 байт
Не знаю, почему я играл в гольф; Мне просто хотелось.
источник
JavaScript / BF
На обоих этих языках ни один ввод не считается ложным, а любой ввод считается верным.
Когда вы видите, что структура программы повернута на 90 градусов влево, символы БФ выглядят как башни в городе :)
Попробуйте онлайн (BF true testcase)!
Попробуйте онлайн (ложный тестовый сценарий BF)!
объяснение
JavaScript
Если
prompt
true (то есть не пусто, потому чтоprompt
возвращает строку), выводитtrue
или выводитfalse
.BF
Выводит
sand
(датский для истины), если есть вход, или же выводитusand
(ложь), если вход пустой.TL; DR Если вход не пустой (т. Е. Истина), ничего не выводить. Если вход пуст (то есть false), выведите
u
. Затем, независимо от того, является ли ввод истинным или ложным, выводитсяsand
.Я черпал вдохновение из https://esolangs.org/wiki/Brainfuck_algorithms, с помощью которого я построил логику своей программы.
Примите вход. Если вход не пустой, увеличьте объем памяти, назовем эту ячейку «Ячейка А». Конец if-оператора
Сравнивает значение «Ячейка А» с
0
. Если они равны, пусть будет «Ячейка B»1
, или пусть так и будет0
.Если «Ячейка B» равна 1, то выводится
u
. Закрыть if-операторВыход
sand
источник
u
условно, не такs
ли?u
условноs
условно; Вы могли бы это исправить для ясности? Хороший ответ в любом случае.If input is empty (ie false), output `s`.
Я думаю, что это та часть, которая запутала Алекса Л.Haskell, JavaScript, Python, 115 байт
источник