Припустимо, у вас є 2 мови Aта B. Рядок s- це напівквіток в, Aі Bякщо він відповідає наступним умовам:
sє лайкою в мовіA.sявляє собою поліглот вAіB.- Висновок запуску
sякBпрограми - це інший рядокs', який є quine inB.
Мета цього завдання - написати напівквіту двома різними мовами. Це код-гольф , тому найкоротший виграш коду, найраніша відповідь використовується як краватка.
Правила для Quines
Приймаються тільки справжні лайки. Тобто вам потрібно надрукувати весь дослівний код дослівно до STDOUT, без :
- читання вашого вихідного коду, прямо чи опосередковано.
- покладаючись на середовище REPL, яке просто оцінює та друкує кожен вираз, яким ви його подаєте.
- покладаючись на мовні функції, які просто роздруковують джерело в певних випадках.
- за допомогою повідомлень про помилки або STDERR для написання цілої або часткової лайки. (Ви можете записувати речі в STDERR або створювати попередження / не фатальні помилки, якщо STDOUT є дійсною квинтом і повідомлення про помилки не є частиною цього.)
Крім того, ваш вихідний код не повинен складатися виключно з літералів (будь то рядкові літерали, числові літерали тощо) та / або NOP. Наприклад, `12це поліглот в Jelly і Pyth, але в Jelly це NOP і числовий буквал, тому він недійсний.
Будь-який непригнічуваний вихід (наприклад, повідомлення про авторські права, повідомлення про запуск / вимкнення або подача кінцевих рядків) може бути ігнорований у висновку заради дійсності квинти.
Правила для поліглотів
Дві використовувані мови повинні бути чітко різними. Зокрема:
- Вони не повинні бути різними версіями однієї мови (наприклад, Python 2 проти Python 3).
- Вони не повинні бути різними діалектами однієї мови (наприклад, Pascal vs. Delphi).
- Одна мова не може бути підмножиною іншої (наприклад, C проти C ++ 1 ).
- Одна мова не може бути тривіальним похідним від іншої (наприклад, Matlab vs. Octave 2 , brainfuck vs Billfuck vs TinyBF vs ShadyAsFuck проти всіх інших тривіальних похідних brainfuck).
Різні правила
- Ви не можете приймати дані від STDIN (або будь-якого іншого джерела). Якщо обрана мова повинна приймати введення, то або вхід повинен бути порожнім (порожня рядок, трубопровід
/dev/nullтощо), або вихід програми не повинен залежати від введення. - Для цього завдання ви повинні написати повну програму. Потрібен додатковий код для запуску рішення не допускається (наприклад, призначення та виклик функції лямбда, визначеної в рішенні).
1: Так, я знаю, що C насправді не є підмножиною C ++. Це досить близько, щоб вважати його одним з метою поліглотів, тому я вважаю це завданням.
2: Як і пункт 1 вище, хоча Octave технічно не на 100% сумісний з Matlab, він був розроблений таким чином, щоб бути сумісним і досить близьким, що дозволяти поліглоту Matlab / Octave би реалізувати виклик.