Quines
Você já ouviu falar em Quines?
Quine é um programa que não tem nenhuma finalidade a não ser imprimir seu próprio código fonte. Sim, é algo aparentemente simples, mas que pode também parecer como um paradoxo.
Quer ver um exemplo de Quine em javascript? Tente executar o seguinte código no seu console do navegador: !function $(){console.log('!'+$+'()')}()
Você verá que o output desse código será exatamente igual ao código em si. Um outro exemplo ainda menor e mais bizarro em javascript é o seguinte: (_=()=>`(_=${_})()`)()
Por se tratar de algo bastante inútil a comunidade se esforça para conseguer sempre fazer novas Quines em diferentes linguagens, como por exemplo em
C -
1 | main(s){printf(s="main(s){printf(s=%c%s%1$c,34,s);}",34,s);} |
C# -
1 | using System; |
Java -
1 | public class Quine { public static void main(String[] args) { char c=34; System.out.println(s+c+s+c+';'+'}'); } static String s="public class Quine { public static void main(String[] args) { char c=34; System.out.println(s+c+s+c+';'+'}'); } static String s=";} |
Python -
1 | _='_=%r;print _%%_';print _%_ |
HQ9+ (uma linguagem esotérica também não muito útil) - Q
E se você acha isso muito simples ainda, você pode se aventurar em entender o Quine Relay, uma implementação que a partir de uma linguagem gera código em outra, seguindo por 128 diferentes linguagens de programação até voltar ao código fonte inicial.
Conclusão
Fica aqui o desafio, você consegue fazer alguma Quine? A tarefa parece fácil, mas não é nada trivial.