Как правило, полиглоты создаются таким образом, что каждый язык может игнорировать части кода, которые присутствуют для других языков, оборачивая их в строковые литералы, используя синтаксис комментариев или другие подобные трюки.
Ваша цель - написать полиглот, в котором для каждого языка выводится код из полиглота, который производит этот вывод. В частности, выходные данные должны быть построены из кода полиглота только с удалениями, и это должен быть quine на данном языке.
правила
- Допускаются только правильные кавычки (без чтения исходного кода, без ввода данных, вывод должен быть STDOUT или ближайшей альтернативой, если STDOUT не является опцией, а программы должны состоять из не только литералов, которые неявно печатаются).
- Поскольку разные языки могут использовать разные кодировки, здесь важны необработанные байты. Например, если язык A использует UTF-8, а язык B использует CP437, (шестнадцатеричный) код
C3 88 46 47
будетÈFG
для языка A и├êFG
для языка B. - Все выходные данные должны быть различны (опять же, сравнивая необработанные байты). Это позволяет избежать сложностей при попытке ограничить версии на второстепенных языках - если два языка используют одну и ту же часть кода для одной и той же вещи, вы не можете требовать их обоих.
- Если у вас есть два языка A и B, которые
XY
являются допустимыми выходными данными для обоих, ноYZ
также действительными для B, вы можете выбратьXY
в качестве выходных данных для A иYZ
в качестве выходных данных для B, так что вы можете требовать оба из них в своем счете но вы не можете претендоватьXY
на оба языка из-за вышеуказанного правила).
- Если у вас есть два языка A и B, которые
- Все выходы должны быть максимально короткими. Например, если ваш код был
print('foo')#something
для Python 3 (игнорируя тот факт, что вывод неправильный), то код, который вам нужно будет выводить, будетprint('foo')
иprint('foo')#
не будет разрешен. Если есть несколько строк одинаковой (минимальной) длины, которые дают правильный вывод, вы можете выбрать любую из них. - Материалы должны быть полиглоты как минимум на 2 языках.
- Ваша оценка будет предоставлена
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
. Самый высокий балл побеждает. В случае, если две заявки наберут одинаковый балл, победит тот, кто набрал этот балл первым.