A quine is referred to the code that upon execution, will produce the exact same code that was executed prior as the output. It exhibits the idempotency property. Quine is also known as "self-replicating programs" or "self-copying programs."
C
Example 1
const unsigned char data[] = { /* snip */ };
#include <stdio.h>
int main() {
printf( "const unsigned char data[] = {" );
for ( int i=0; i<sizeof(data); i++ ) {
printf( " %0#4x,", data[i] );
}
printf( "\n};\n\n" );
for ( int j=0; j<sizeof(data); j++)
putchar( data[j] );
return 0;
}
Example 2
int main(void) {
char str[]= " int main(void)\
{ char str[]= %c%s%c;\
printf(str, 0x22, str, 0x22);}";
printf(str, 0x22, str, 0x22);}
Example 3
main(){char*s="main(){char*s=%c%s%c;printf(s,34,s,34);}";printf(s,34,s,34);}
CoffeeScript
s="s=%j;console.log s,s";console.log s,s
Java
public class Quine
{
public static void main(String[] args)
{
char q = 34; // Quotation mark character
String[] l = { // Array of source code
"public class Quine",
"{",
" public static void main(String[] args)",
" {",
" char q = 34; // Quotation mark character",
" String[] l = { // Array of source code",
" ",
" };",
" for(int i = 0; i < 6; i++) // Print opening code",
" System.out.println(l[i]);",
" for(int i = 0; i < l.length; i++) // Print string array",
" System.out.println(l[6] + q + l[i] + q + ',');",
" for(int i = 7; i < l.length; i++) // Print this code",
" System.out.println(l[i]);",
" }",
"}",
};
for(int i = 0; i < 6; i++) // Print opening code
System.out.println(l[i]);
for(int i = 0; i < l.length; i++) // Print string array
System.out.println(l[6] + q + l[i] + q + ',');
for(int i = 7; i < l.length; i++) // Print this code
System.out.println(l[i]);
}
}
JavaScript
s = "s=%j;console.log(s,s)";
console.log(
s,
s
)(function a() {
console.log("(" + a + ")");
})();
code = 'var q=unescape("%27");console.log("code="+q+code+q+";eval(code)")';
eval(code);
Lua
s="s=%qprint(s:format(s))"print(s:format(s))
Perl
Example 1
$s='$s=%c%s%c;printf($s,39,$s,39);';printf($s,39,$s,39);
Example 2
$s=q($s=q(%s);printf($s,%s););printf($s,%s);
Python
Example 1
_='_=%r;print (_%%_)';print (_%_)
Example 2
s='s=%r;print(s%%s)';print(s%s)
Example 3
s='s=%r;print(s%%s,sep="")';print(s%s,sep="")
Ruby
Example 1
s="s=%p;printf s,s";printf s,s
Example 2
s="s=%p;print s%%s";print s%s
Example 3
s="s=%p;puts s%%s";puts s%s
Example 4
s="s=%c%s%c;printf s,34,s,34";printf s,34,s,34
Shell
s='s=\47%s\47;printf "$s" "$s"';printf "$s" "$s"
Scheme
(define x '(
(display "(define x '(")
(newline)
(map (lambda (s) (write s) (newline)) x)
(display "))")
(newline)
(display "(map eval x)")
(newline)
))
(map eval x)
References
Bertoldi, D. How to write your first Quine program.ย Towards Data Science. https://towardsdatascience.com/how-to-write-your-first-quine-program-947f2b7e4a6f