Як довго ваша (мовна) змія?


14

Виконуючи завдання з quine третього порядку , ваше завдання - написати програму Ouroboros, яка використовує якомога більше мов.

Тобто мовою A запишіть програму pA, яка виводить програму pB мовою B. Програма pB повинна виводити програму pC мовою C, і так далі, поки нарешті програма не виводить оригінальну програму pA мовою A.

Жодна з двох мов у вашому циклі не може бути однаковою або підмножинами або суперсетами. Жодна з програм циклу не може бути ідентичною.

Виграє найдовший ланцюжок мов. Довжина вихідного коду буде вимикачем.

Ось приклад рішення довжиною 3, подане Вентеро.

s='print q<puts %%q{s=%r;print s%%s}>';print s%s

з Python генерує цей фрагмент Perl

print q<puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}>

який генерує наступний код Ruby

puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}

який друкує оригінальний фрагмент Python:

s='print q<puts %%q{s=%r;print s%%s}>';print s%s



@Ypnypn Це не дублікат цього? Я маю на увазі, що це зробити цикл якомога довшим за допомогою вимикача довжини вихідного коду. Ніхто ніколи не мав можливості розмістити довжину 4 Ouroborous раніше :) Також петля відрізняється від ланцюга.

Насправді він дуже схожий на цей , але для цього не потрібна послідовність циклічного циклу, тому не було жодної складової.
Мартін Ендер

4
Звірка на 50 мов, здається, перемогла ще до того, як ми навіть почали.

Відповіді:


8

Ось цикл із 4-х мов:

C -> Bash -> Batch -> Python -> C

С

main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}

Баш

echo "echo print 'main(){char *c=\"echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c\";printf(c,34,39,92,34,c,92,34,39,34);}'"

Пакетна

echo print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'

Пітон

print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'

Дуже вражає!
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.