Perl + Digest: MD5, 89 байт
$_=q(use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex"\$_=q($_);eval");eval
Немає посилання TIO, оскільки Digest :: MD5 не встановлений у TIO. Зауважте, що для цього потрібно встановити рівень відповідності мові 5,10 або вище ( -M5.010
; це не передбачає байтового покарання відповідно до правил PPCG.
Пояснення
Це ще одне завдання "надрукувати функцію вихідного коду", що означає, що її можна тривіально вирішити за допомогою універсального конструктора quine.
Універсальний конструктор quine
$_=q(…"\$_=q($_);eval");eval
Ми використовуємо q()
нотацію рядків (яка гніздо) для ініціалізації $_
, змінну "за замовчуванням", яку Perl використовує для відсутніх аргументів. Тоді ми eval
з відсутнім аргументом, так що рядок всередині q()
отримує оцінку.
Рядок всередині q()
- це опис того, як створити всю програму; решту програми ми вказуємо буквально, а потім використовуємо незмінену, $_
щоб замінити всю рядок на внутрішню.
Таким чином, техніка створює рядок з однаковим вмістом для джерела всієї програми; ми можемо роздрукувати його, щоб отримати квінку. Ми також можемо спочатку робити інші речі до цього, зробивши універсальний конструктор quine.
Решта програми
use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex
Дуже просто: імпортуйте вбудований MD5, потім надрукуйте фіксовану рядок, вказаний у запитанні (стискати її не варто; я вважаю, що в Perl декомпресор займає більше місця, ніж просто викладати рядок буквально), і використовуйте вбудований MD5 на рядок, який ми отримали через універсальний конструктор quine.