Напишите программу, которая при запуске на разных языках выводит разные байтовые перестановки кода на каждом языке. Точный исходный код считается за одну перестановку.
Здесь «другой язык» может быть другой версии (Py 2 и Py 3) или разные стандартные флаги. Это другой вывод, который заставляет другую версию.
Правильные правила Quine применяются для программы на каждом языке. Ваша оценка рассчитывается как (Language count)^6/(Code length in bytes)
, с более высокой оценки лучше.
Образец:
Если ваш код работает AAB
и работает на трех разных языках, возвращается ABA
, AAB
а AAB
затем его оценка 2^6/3
( AAB
учитывается только один из двух ). Это нормально, если ABA
бессмысленно.
AAB
печатаетсяAAB
на языке-1 иABA
на языке-2, я предполагаю, что это должен быть правильный quine, если рассматривать его как программу языка-1, и нет никаких дополнительных ограничений, связанных с ее интерпретацией как программа «язык-2». Это правильно?Ответы:
Befunge-98 , > <> , Голе> <> , Деление , Wumpus , Кардинал , пчелиный и Алиса Счет: 8 6 /88 = 2978,909
Попробуйте это в Befunge! Попробуйте это в> <>! Попробуйте в Gol> <>! Попробуйте это в Fission! Попробуйте это в Wumpus! Попробуйте в Кардинал! Попробуйте это в пчелином воске! Попробуйте это в Алисе!
Проверка!
Много 2D-языков, все злоупотребляющие строковыми литералами. Разница в результатах, таким образом:
> <>, Gol> <> и Befunge-98 все распечатать код в обратном направлении (за исключением
"
), с последними тремя персонажами в разных позициях,R*"
,O"*
и"R*
соответственно. Пчелиный воск также имеет код в обратном направлении, но последние три символа чередуются в первой части вывода. Алиса в основном в обратном направлении, для всех уцелевших символов , за исключением ('
,\
и"
) перешел на фронт вместо этого.Wumpus - единственная действительная квинна, Fission ставит
"
в конце кода вместо начала, а кардинал ставит"
между0
и5
ближайшим началом.Доказательство различных перестановок
Пояснения:
Befunge-98:
> <> и Гол> <>:
Честно говоря, я не много здесь сделал. Единственная разница между выполнением этих двух языков - это
@
команда, которая по-разному вращает три верхних значения стека для каждого языка.Деление:
Wumpus:
кардинал:
Пчелиный воск:
Алиса:
источник
Perl 5 , Руби , JavaScript (хром), PHP , Python , 2 , Python 3 , 1206 байт, оценка 6 6 /1206 = +38,6865671641791
Проверьте Perl, Ruby, PHP, Python 2 и Python 3 онлайн!
Примечание . Запуск вышеуказанной программы в консоли Inspector в Chrome (которая поддерживает позиционные аргументы для
console.log
) возвращает правильную программу.объяснение
Это оказалось намного дольше, чем я надеялся, и я тоже немного усложнил свою жизнь, так что я, вероятно, продолжу с этим возиться. Я бы тоже хотел добавить больше языков, но мне нужно найти что-то, что не против
$
сигил ...Это в значительной степени стандартный формат Куайн , где расчет процитировать использование немного отличается для каждого языка: в Ruby ,
%q&
используется, PHP использует'
, JavaScript (Node.js) использует`
и Perl 5 используетq(
...)
. Поскольку изменяются только кавычки, остальная часть программы по-прежнему исполняема и имеет правильный синтаксис на каждом языке. Python 2 и 3 обернуты вокруг предыдущей программы, использующей"""
для Python 2 и'''
для Python 3.Результирующие программы на Perl и Ruby не являются стандартными quines, дополнительные
q
/%q
s добавляются к каждой итерации, но первая программа возвращается правильно.Результаты:
eval($_=q&
...q&);printf($x=q&
...q&,
...);//#'%`'%`'%`'%`''''''''''''"""
...eval($_=%q&
...%q&);printf($x=%q&
...%q&,
...);//#`'`'`'`'''''''''''''"""
...eval($_=`
...`);printf($x=`
...`,
...);//#%q&'%q&'%q&'%q&'''''''''''''"""
...eval($_='
...');printf($x='
...',
...);//#`q&%`q&%`q&%`q&%''''''''''''"""
......
_="""
...""";
...q="""
...''''''''''''""";print(_.format(Q,_,q[0:-12]+R,"%"))
...
_='''
...''';
...q='''
...""""""""""""''';print(_.format(Q,_,q[0:-12]+R,"%"))
Я много работал над этим, надеюсь, я ничего не пропустил здесь. У меня все еще есть способ пойти куда-нибудь ближе к счету Джо Кинга ...
источник
Желе , и М , 2 6 /14 = 4,57
Попробуйте это в желе!
Попробуйте это в М!
Ɗṙ@ȮṾ1“Ɗṙ@ȮṾ1”
в желе1Ɗṙ@ȮṾ“1Ɗṙ@ȮṾ”
в Мисточник
Quine
в PHP?Python 2 и Python 3 , 2 6 /61 = 1,05
Попробуйте это в Python 2!
Попробуйте это в Python 3!
Сохранено 12 байтов благодаря Джо Кингу.
Python 2 гравюры
Python 3 отпечатка
При этом используется тот факт , что
1/2
это.5
в Python 3 и0
в Python 2.источник
Bash / GolfScript, 72 байта, 2 балла 6 /72 = 8/9 (~ 0,888 ...)
Содержит один завершающий пробел в первых двух строках.
Попробуйте онлайн в Bash.
Попробуйте онлайн в GolfScript.
Простая модификация ответа @ jimmy23013 для задания « Напиши полихиню » . Модификация, которая была сделана, удаляла завершающий пробел после третьей строки и изменялась
\n"+@n.;
на\n "+@n;
.Bash напечатает строки 1 и 2 следующим образом:
И GolfScript напечатает строки 1 и 2 следующим образом:
Здесь базовая программа, вывод Bash и вывод GolfScript соответственно с заменой новых строк на
\n
:источник