C, C ++, BF, BASH и Ruby; 280 символов
Оценка около 0.040
#include "stdio.h"
#define s "C"
#ifdef __cplusplus
#define s "C++"
#endif
#ifndef s
#"+++++++++[>++++++++++>+++++++++<<-]>>-.<++++.>-.++++++++.<----.>---.<+++++++.>---.++++++++.<<++++++++++.[-]"
if [ 1 == 2 ];then
puts "Ruby"
exit
fi
echo "BASH"
exit
end
#endif
main(){puts(s);}
Обратите внимание, что я использую систему Linux.
Код запускается или компилируется с помощью следующих команд (имя файла test.c
)
C:
gcc test.c
При запуске с ./a.out
выводомC
C ++:
c++ test.c
При запуске с ./a.out
выводомC++
BASH:
./test.c
Выходы: BASH
Рубин:
ruby test.c
Выходы: Ruby
BrainF ***:
Проверено с использованием следующего:
Выходы: 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)
#if (a)
##(true) ifTrue: ['SmallTalk' printNl]
##(ObjectMemory quit)
#"+++++++++++[>++++++++++>+++++++++<<-]>>-.<++++.>-.++++++++.<----.>---.<+++++++.>---.++++++++.<<++++++++++.[-]"
if [ 1 == 2 ];then
puts 'Ruby'
exit
fi
echo 'BASH'
exit
end
=begin
#endif
#include "stdio.h"
main(){puts(
#ifdef __OBJC__
"Objective-"
#endif
"C"
#ifdef __cplusplus
"++"
#endif
);}
#ifdef b
=end
#endif
В приведенном выше коде вам нужно будет переименовать файл, чтобы получить имя языка для target-c, obj-c ++, c и c ++.
print()
для Perl, Python, PHP, Processing и R, считаться тривиальным или это приемлемо?