Quine /kwi:n/ N. [from The Name Of The Logician Willard Van Orman Quine, Via Douglas Hofstadter] A Program That Generates A Copy Of Its Own Source Text As Its Complete Output.

HomeFortune CookiesJargon File

quine /kwi:n/ n.

[from the name of the logician Willard
van Orman Quine, via Douglas Hofstadter] A program that generates a
copy of its own source text as its complete output. Devising the
shortest possible quine in some given programming language is a
common hackish amusement. (We ignore some variants of BASIC
in which a program consisting of a single empty string literal
reproduces itself trivially.) Here is one classic quine:

((lambda (x)
(list x (list (quote quote) x)))
(quote
(lambda (x)
(list x (list (quote quote) x)))))


This one works in LISP or Scheme. It's relatively easy to write
quines in other languages such as Postscript which readily handle
programs as data; much harder (and thus more challenging!) in
languages like C which do not. Here is a classic C quine for ASCII
machines:

char*f="char*f=%c%s%c;main()
{printf(f,34,f,34,10);}%c";
main(){printf(f,34,f,34,10);}


For excruciatingly exact quinishness, remove the interior line
breaks. Here is another elegant quine in ANSI C:

#define q(k)main(){return!puts(#k"\nq("#k")");*}
q(#define q(k)main(){return!puts(#k"\nq("#k")");})
*


Some infamous Obfuscated C Contest entries have been
quines that reproduced in exotic ways. There is an amusing
Quine Home Page.

Related: