Виклик:
Напишіть код, який при виконанні видасть вихідний код другої програми, яку можна виконати іншою мовою. Друга програма повинна виводити вихідний код третьої програми, яка може бути виконана третьою мовою тощо. Остання програма повинна виводитись PPCG
із необов'язкового одного останнього рядка.
Переможцем стане подання з найбільшою кількістю мов. Довжина коду першої програми буде автоматичним вимикачем.
Важливі правила:
- Жодна програма не може бути однаковою
- Кожна мова повинна працювати лише на одному з вихідних кодів. Використовувати однією і тією ж мовою два місця в ланцюжку не слід, не розриваючи її (див. Приклади) .
- Укорочений ланцюг - це не розірваний ланцюг. Якщо ви можете використовувати мову в іншому місці, ніж призначено, а кінцевим результатом все ще є PPCG, то він недійсний
- Усі версії мови вважаються унікальними мовами (але пам’ятайте правило №2)
Приклади:
Недійсне подання:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
відбиткиprint'disp("PPCG")'
- Python 2:
print'disp("PPCG")'
відбиткиdisp("PPCG")
- Октава:
disp("PPCG")
відбиткиPPCG
Це працює належним чином, але: ви можете запускати і перший, і другий код у Python 2, не порушуючи ланцюг, тому це порушує правило №2.
Дійсне подання з оцінкою 3:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
відбиткиprint'disp("PPCG")'
- Perl:
print'disp("PPCG")'
відбиткиdisp("PPCG")
- Октава:
disp("PPCG")
відбиткиPPCG
Це точно такий же код, як і недійсний приклад. Різниця полягає в тому, що ми вибрали мови, які дотримуються правила №2: Ви не можете запустити перший код у Perl / Octave, другий код у Python 3 / Octave, а також останній код у Python 3 / Perl. Це справедливо, навіть якщо Python 2 може запускати дві перші програми, оскільки ми не використовували Python 2 як одну з мов.