Ваша задача - написать программу, которая будет работать на максимально возможном количестве языков, используя как можно меньше символов. Чтобы избежать тривиальных решений, программа должна напечатать название языка, на котором она была запущена.
счет
Ваша программа должна работать как минимум на 5 языках. Оценка программы дается как:
(number of languages)1.5 / (length of program)
Наивысший балл выигрывается не раньше, чем через 10 дней после первого правильного ответа.
print()
для Perl, Python, PHP, Processing и R, считаться тривиальным или это приемлемо?n * n / length
Ответы:
Bash, C, C ++, Obj-C, Obj-C ++, Perl, PHP, Ruby, 183 символа
оценка ~ 0,1236
За C и C-подобные коды я задолжал @ baby-rabbit. Другие вдохновлены признанием того, что во многих языках есть
eval
утверждение, которое неохотно принимает неверный синтаксис.Выводит название языка на стандартный вывод. Иногда генерирует много сообщений об ошибках стандартной ошибки, поэтому подавляйте их при
2>/dev/null
запуске.Вывод решения php
'PHP'
(включая одинарные кавычки), который может немного изменить правила.Последнее редактирование: побрили 12 символов из проницательности, которая
$=
естьfalse
в Ruby,60
в Perl, иprint$=?...
почти наверняка ошибка в Bash. Из-за понимания побольше на 7 тест Perl / Ruby / Bash теперь может войти в один оператор eval.Если правила могут терпеть больше изгибов, я представляю это 8 языков, 43 символа решения (оценка 0.5262)
для которой выходной сигнал включает в себя имя для переводчика
php
,perl
,lua
,rscript
,ruby
,python
,cat
, иrot13
.источник
print("phperluarscriptrubypythontibasicatebg13");
Disp
илиOutput(
ortext(
,print(
команды нет . И включение строки как части выражения с вещественным значением приводитERR:INVALID SYNTAX
к отображению строки, а не к ее отображению (даже в качестве возвращаемого значения). (Также нет;
; TI-Basic использует:
)echo Bash
наps -ocomm= -p$$
? Это выведет имя оболочки как минимум для bash, zsh, ksh, csh и tcsh, возможно, для других.C, C ++, BF, BASH и Ruby; 280 символов
Оценка около 0.040
Обратите внимание, что я использую систему Linux.
Код запускается или компилируется с помощью следующих команд (имя файла
test.c
)C:
При запуске с
./a.out
выводомC
C ++:
При запуске с
./a.out
выводомC++
BASH:
Выходы:
BASH
Рубин:
Выходы:
Ruby
BrainF ***:
Проверено с использованием следующего:
Отладчик JS
Бесплатный переводчик
Мой переводчик
Выходы:
brainfuck
Обратите внимание, что если используется отладчик JS, то первые два знака минус необходимо удалить. Они были включены для смещения знаков плюс в строковом литерале
"C++"
. Это был очень веселый проект, я работаю над добавлением новых языков.Просто для большей ясности, вот спецификации моего интерпретатора / компилятора:
gcc версия 4.6.3
ruby 1.9.3p194 (редакция 2012-04-20 35410) [x86_64-linux]
GNU bash, версия 4.2.24 (1) -релиз (x86_64-pc-linux-gnu)
ПРИМЕЧАНИЕ
Используя трюк @ baby-rabbit, я смог расширить свой код, чтобы он был исполняемым на 7 языках (добавлены Objective-C и target-C ++). Это не мое решение, так как я скопировал некоторые из них, но подумал, что смогу их показать.
Обновление 9.12 Добавлен запуск SmallTalk с помощью gnu-smalltalk!
SmallTalk, C, C ++, Objective-C, Objective-C ++, BASH, BF, Ruby; 384 символа (оценка: 0,059)
В приведенном выше коде вам нужно будет переименовать файл, чтобы получить имя языка для target-c, obj-c ++, c и c ++.
источник
brainf***
?if [ 1 = 2 ]
вместоif [ 1 == 2 ]
, потому что сценарии без hashbang выполняются sh, а не bash. sh может быть или не быть bash, в Debian это тире.bash, c, c ++, obj-c, obj-c ++; 134 знака; оценка = 0,083
переименуйте файл и запустите / откомпилируйте как:
(где cc - clang-421.10.42)
источник
Lua, Ruby, VimL, Sed, Befunge (129 символов; ~ 0,087 балла)
Не уверен, что это считается - sed-часть встроена в линию shebang, что, возможно, является хаком, чтобы обойти ограничение. Это также означает, что он должен запускаться как исполняемый файл, а не как напрямую
sed
.Мне повезло, что все остальные языки (без Befunge) автоматически игнорируют строку shebang (хотя, очевидно, Ruby отказывается запускать файл, если в нем есть строка shebang, в которой нет строки 'ruby').
Пример использования:
источник
BF, Bash, Batch, C, vi (163 символа; оценка ≈ .0686)
(
<ESC>
расшифровывается как ASCII-код 27.)Я проверил это, как командный файл, с версией COMMAND.COM для MS-DOS 6.22. По умолчанию этот интерпретатор смешивает строки исходного кода с выводом. Чтобы этого не произошло, выполните
echo off
перед запуском командного файла.Чтобы выполнить код vi, который я тестировал только с помощью Vim, используйте следующую команду:
источник
touch tmpfile
или: > tmpfile
вместоcat /dev/null > tmpfile
.bash, zsh, ksh, csh, tcsh, 15 символов, оценка 0,745
Это немного натянуто, поскольку все они родственные языки, но есть различия:
источник
Каждый выпуск Python, 18,37291 баллов
Технически допустимо, если вы считаете, что все версии Python являются разными языками. В настоящее время существует 116 версий Python, что, по моему мнению, дает мне оценку 18,37291.
(Также я понимаю, если это не считается правильным ответом, это было просто для удовольствия)
источник
Bash, C, Gawk, Perl, vi (145 символов; оценка ≈ .077)
(
<BS>
обозначает код ASCII 8.<ESC>
обозначает код ASCII 27.)Чтобы выполнить код vi, который я тестировал только с помощью Vim, используйте эту команду:
источник
Это дешевый выбор языков, но здесь идет:
CoffeeScript, JScript, Mozilla Javascript (≈ JavaScript 1.3), ECMAScript Edition 5, ECMAScript Edition 3, 223 символа, оценка ≈ 0,0501)
источник
a="undefined";if(typeof arguments!=a)...else if(typeof WScript!=a...
ой, и вы также можете попробовать играть в гольф ....{
/}
/;
... идея состоит в том,a
чтобы избежать повторного использования"undefined"
, вы также можете сделать этоb=alert
и тогдаb("this is also still just javascript")
. в любом случаеThe golden rule of CoffeeScript is: "It's just JavaScript"
(с сайта coffeescript.org ), вы также можете использовать jquery для добавления шестого языка ....[].map
вместоArray.prototype.map
?Java, Lisp, Whitespace, Intercal, PHP, Befunge-98; оценка = 0,0189
Это был первоначально ответ на это .
источник
public class...
будет вызывать проблему компилятора.Пакет Windows, TI-Basic, Golf-Basic 84 , Quomplex и GTB 5 * 2/93 = 0,11
Как это устроено
Пакет Windows был самым простым, потому что
::
начинается комментарий. Довольно прост в реализации.TI-Basic не поддерживает строчные буквы или обратные кавычки, заставляя его пропустить операторы
d`"GOLF-BASIC 84":g`1
, которые Golf-Basic оценивает, отображая сообщение и перенаправляя его на метку 1, где оно быстро заканчивается. Это похоже на GTB, с его удобным отображаемым символом~
. Кстати, строка без отображения будет вставленаAns
. Если после него нет команд отображения,Ans
будет выведен результат (здесь это не так).Quomplex был добавлен вначале, потому что его сложный синтаксис не позволяет пропускать многое. Все, что он делает, это добавляет
"Quomplex"
к выводу, а затем для освоения программы ...Овладение синтаксисом программирования
Чистый гений. Quomplex игнорирует
:
и принимает"'
и'"
как строки, оставляя его для вывода стека и погибает в бесконечном цикле while ([]
). Между тем, Golf-Basic и TI-Basic воспринимают целое"'*[]'"
как строку, потому что'
это математический оператор, а не оператор строки.источник
:
обозначает метку в командном файле, а не комментарий. Правда, он ничего не выполняет сам по себе.::
(но все же ярлык). Я предпочел бы использовать это, чемREM
, тем более, что это требуется в TI-Basic.JScript, EcmaScript Edition 3, 5, 6, 2016, Node, Mozilla JavaScript (оценка ≈ 0.1342)
Этот ответ изначально основан на ответе Питера Олсона, но за исключением CoffeeScript (так как значимые для пробелов языки могут быть ужасны для игры в гольф).
Я также добавил Node , ES6 и ES2016 и немного поиграл в код, почти в три раза превысив исходную оценку.
источник
16 языков, 348 байт, оценка: 0,183908046
Это работает в C (gcc), C ++ (gcc), C (ecpp), C ++ (ecpp), C (clang), C ++ (clang), C (tcc), sh, dash, bash, zsh, ksh, csh, tcsh, rk и SIL.
источник
JScript, EcmaScript Edition 3, 5, 6, 2016, 2017, Node, Mozilla JavaScript (оценка = .174193548387), CoffeeScript (так как значимые для пробелов языки могут быть ужасны для игры в гольф).
источник