Фон
Оскільки більшість PPCG завсідників будуть відомі, Куайн це програма , яка виводить свій вихідний код при запуску; а відстань Левенштейна між двома рядками - це мінімальна кількість вставок, видалень та редагувань, необхідних для зміни однієї рядки в іншу. У цьому виклику ми поєднуємо два поняття в "levenquine": програма, яка видає власний вихідний код, але з одним екземпляром одного символу, вставленого, видаленого або заміненого іншим символом. (Іншими словами, відстань Левенштейна між програмою та її результатом дорівнює 1.)
Задача
Напишіть levenquine таким чином, щоб його вихід був levenquine, вихід цієї програми також є levenquine тощо. Крім того, в певний момент послідовність багаторазового запуску програми, запуску її виводу, запуску виводу його результатів тощо повинна врешті повернутися до початкової програми.
Існує ще одне додаткове обмеження, що робить це набагато складніше: десь у цьому циклі повинні бути дві різні програми, які не мають спільних символів (іншими словами, немає символу, який існує в одній програмі, а також існує в іншій програмі). Тому вашій програмі доведеться поступово перетворюватися на інший набір символів, і повертатися знову.
Якщо ви використовуєте мову програмування, на якій є неминуча табличка котла, необхідна для будь-якої програми, яка виробляє вихід (наприклад, у неї є лише один спосіб написання print
заяви та відсутність інших корисних форм виводу), ви можете трактувати цю коробку як неіснуючу для цієї мети визначення того, які символи мають дві програми. Однак ви все ж повинні рахувати цю котельну плиту для визначення властивості коду Levenquine.
Роз'яснення
- Кожна з «програм» циклу може бути або повноцінною програмою, або функцією. Вони не повинні бути однаковими, наприклад, деякі можуть бути повноцінними програмами, а деякі - функціями.
- Не всі програми циклу повинні використовувати однакову форму виводу. Наприклад, деякі можуть виводити за допомогою стандартного виводу, а деякі можуть виводити за допомогою стандартної помилки.
- Ваші програми запускатимуться без введення даних (або мовами, які потребують введення, щоб зробити що-небудь взагалі, найпростіший можливий ввід).
- Діють правильні правила квоти ; хоча левенкін не є справжньою королевою, ви не можете робити нічого, що було б протизаконно, коли пишете належну лайку. Зокрема, нульова програма ніколи не є дійсним результатом з належного Levenquine (і, отже, не може бути частиною вашого циклу).
- Обмеження Levenquine вимірюється символами, а не байтами (наприклад
ê
, один символ, навіть коли джерело закодовано в UTF-8). Загальне обмеження без символів також вимірюється у вигляді символів. Однак умова перемоги рахується в байтах.
Стан перемоги
Будь ласка, подайте щонайменше три програми з циклу: найкоротша програма (вимірюється в байтах); і дві програми з циклу, які не мають спільних символів. Цілком можливо, що два з них однакові, а також можливо, що всі три є різними. Оцінка базується на довжині в байтах найкоротшої програми, причому коротша буде кращою, що робить це своєрідним змаганням з кодового гольфу .