7 , 4 байти ASCII
1603
Спробуйте в Інтернеті!
Я знаю, що 7 зазвичай не кодуються в ASCII, але цього разу це зручніше кодування, так що ми додаємо 1 байт з кожним запуском, а не 3 біти.
Я також не впевнений, чи вважається це обманом чи ні. (Зазвичай, незрозуміло, чи підманює 7 квінт чи ні, оскільки вона розширює межу різними способами.) Можна зробити гідний аргумент, що 0кодує 6, але взагалі незрозуміло, звідки беруться отримані символи " "в 7 тому, що вона має стільки, досить химерних, неявних поведінок.
Ця програма друкує 1додані файли, і це зробить, навіть якщо ви додасте до неї ряд 1s. Ось коментований слід налагодження 160311:
|| 160311 Initial data ||; initial program 160311
||7 60311 1 command = append 7 to data
|1 0311 6 command = escape from the last | onwards (7 escapes to 1)
|16e77 0311 commands = append 6e77 to data
|16e77 16e77 Implicit (program is empty): copy data past last | to program
|16e777 6e77 1 command = append 7 to data
71603111 e77 6 command = escape from the last | onwards
71603111 e77 e7 command = output in same encoding as the source
(У програмі не |залишилося, тому eнегайно вийдете з програми в якості побічного ефекту, це означає, що остаточний 7s ніколи не запускається).
Основна плутанина щодо того, звідки беруться всі символи, полягає в тому, що більшість команд у 7 просто видає дані під час запуску, а потім 6намагається реконструювати послідовність команд, яка створювала б даний фрагмент даних; це часто закінчується близьким, але не тотожним, оригіналом. (Для цілей виклику ви зазвичай пишете програму 7 таким чином, що результат буде майже однаковим, звичайно відрізняючись провідними або кінцевими 7s.) Так, наприклад, 1у даних стає 716, що є найпростішим способом додавання 1до поточного рядка даних. Ми спочатку створили його з 16іншою (але подібною) послідовністю символів, деструктивно видаливши одну з|маркери, з яких почалися дані. (Я думаю, що, мабуть, найкращий аргумент, що це не лише буквальна квітка, це те, що вихід відрізняється від вхідного!)