Цей виклик схожий на Can You Meta Quine?
Quine - це програма, яка виробляє себе в STDOUT. Ця задача полягає у створенні програми A, яка під час запуску створює програму B на STDOUT. Програма B під час запуску створює програму A на STDOUT. Програми A і B повинні бути написані (та запущені) тією ж мовою. Пов'язане питання обмежене A! = B. Це виглядало занадто просто. Отже, для цього питання ми наполягаємо, що А і В - це антикварини, використовуючи такі правила:
- Програми A і B можуть не використовувати жодних одних і тих же символів, за винятком пробілів і роздільників висловлювань, а також розділових знаків.
- Програми A і B повинні містити принаймні один символ, який не є ні пробілом, ні роздільником висловлювань, ні пунктуаційним символом.
- Для цілей правил 1 і 2 термін "пробіл" виключає будь-який символ або послідовність символів, які самі по собі є інтерпретованим твердженням, оператором або символом (на відміну від роздільника). Тому в мові Whitespace немає пробілів.
- Розділювач висловлювань - це синтаксичний елемент, який умовно використовується в мові для розділення висловлювань. Це включає новий рядок у python або крапку з комою на Java, perl або C.
- Знак пунктуації - символ ASCII, який не є ні пробілом, ні класом символів POSIX (тобто, підкреслення не є пунктуаційним для цієї мети) - тобто
ispunct()
повернеться істинно, і це не так_
. - Програма A під час запуску повинна виробляти програму (Програма B) на своєму STDOUT, яка при запуску по черзі виробляє програму A.
- Програми A і B повинні бути однаковою мовою програмування.
- Використовувана мова програмування фактично повинна бути мовою програмування. Якщо ви не зробите гарний випадок інакше, я вважаю, що він повинен бути Тьюрінгом завершеним.
- Принаймні один з A і B повинен виконати принаймні одне твердження в межах мови.
Це кодовий гольф, тому найкоротша відповідь виграє, оцінка становить тривалість програми А в байтах (тобто тривалість програми B не має значення).
A
і a
розглядаються різні «символи»?