Perl + Digest :: MD5, 89 bytes
$_=q(use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex"\$_=q($_);eval");eval
No hay enlace TIO porque Digest :: MD5 no está instalado en TIO. Tenga en cuenta que esto requiere que el nivel de conformidad del idioma se establezca en 5.10 o superior ( -M5.010
; esto no conlleva una penalización de bytes de acuerdo con las reglas de PPCG.
Explicación
Este es otro desafío de "imprimir una función del código fuente", lo que significa que se puede resolver trivialmente a través de un constructor universal de quine.
Constructor universal de quine
$_=q(…"\$_=q($_);eval");eval
Usamos la q()
notación de cadena (que anida) para inicializar $_
, la variable "predeterminada" que Perl usa para los argumentos faltantes. Luego tenemos eval
un argumento que falta, para que la cadena dentro del q()
se evalúe.
La cadena dentro de q()
es una descripción de cómo crear todo el programa; especificamos el resto del programa literalmente, luego usamos un sin escape $_
para sustituir toda la cadena por el interior.
La técnica crea así una cadena con contenidos idénticos a la fuente del programa completo; podríamos imprimirlo para producir una quine. Sin embargo, también podemos hacer otras cosas primero, creando un constructor universal de quine.
El resto del programa
use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex
Muy simple: importe un MD5 incorporado, luego imprima la cadena fija especificada en la pregunta (no vale la pena comprimirlo, creo que en Perl el descompresor ocuparía más espacio que simplemente indicar la cadena literalmente), y use el MD5 incorporado en la cadena que obtuvimos a través del constructor universal quine.