Perl + Digest :: MD5, 89 bytes
$_=q(use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex"\$_=q($_);eval");eval
Nenhum link TIO porque o Digest :: MD5 não está instalado no TIO. Observe que isso exige que o nível de conformidade do idioma seja definido como 5.10 ou superior ( -M5.010
; isso não implica uma penalidade de bytes, de acordo com as regras do PPCG.
Explicação
Este é mais um desafio "imprimir uma função do código fonte", o que significa que ele pode ser resolvido trivialmente através de um construtor de quine universal.
Construtor de quine universal
$_=q(…"\$_=q($_);eval");eval
Usamos a q()
notação de seqüência de caracteres (que aninha) para inicializar $_
, a variável "padrão" que o Perl usa para argumentos ausentes. Em seguida, temos eval
um argumento ausente, para que a string dentro do q()
seja avaliada.
A string dentro de q()
é uma descrição de como criar o programa inteiro; nós especificamos o restante do programa literalmente, depois usamos um sem escape $_
para substituir a string inteira por dentro.
A técnica cria assim uma cadeia de caracteres com conteúdo idêntico à fonte do programa inteiro; nós poderíamos imprimi-lo para produzir uma solução. Também podemos fazer outras coisas primeiro, criando um construtor universal de quine.
O resto do programa
use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex
Muito simples: importe um MD5 embutido, imprima a string fixa especificada na pergunta (não vale a pena compactá-lo, acredito que no Perl o descompactador ocuparia mais espaço do que apenas declarar literalmente a string) e use o MD5 embutido a string que recebemos através do construtor universal de quine.