2014-03-27 18:54:56 +00:00

28 lines
3.4 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>quine</title><link rel="stylesheet" href="../../jargon.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.61.0"/><link rel="home" href="../index.html" title="The Jargon File"/><link rel="up" href="../Q.html" title="Q"/><link rel="previous" href="quick-and-dirty.html" title="quick-and-dirty"/><link rel="next" href="Quirk-objection.html" title="Quirk objection"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">quine</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="quick-and-dirty.html">Prev</a> </td><th width="60%" align="center">Q</th><td width="20%" align="right"> <a accesskey="n" href="Quirk-objection.html">Next</a></td></tr></table><hr/></div><dt><a id="quine"/><dt xmlns="" id="quine"><b>quine</b>: <span xmlns="http://www.w3.org/1999/xhtml" class="pronunciation">/kwi:n/</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="grammar">n.</span></dt></dt><dd><p> [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:</p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">
((lambda (x)
(list x (list (quote quote) x)))
(quote
(lambda (x)
(list x (list (quote quote) x)))))
</pre></td></tr></table><p>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:</p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">
char*f=&quot;char*f=%c%s%c;main()
{printf(f,34,f,34,10);}%c&quot;;
main(){printf(f,34,f,34,10);}
</pre></td></tr></table><p>For excruciatingly exact quinishness, remove the interior line
breaks. Here is another elegant quine in ANSI C:</p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">
#define q(k)main(){return!puts(#k&quot;\nq(&quot;#k&quot;)&quot;);}
q(#define q(k)main(){return!puts(#k&quot;\nq(&quot;#k&quot;)&quot;);})
</pre></td></tr></table><p>Some infamous <a href="../O/Obfuscated-C-Contest.html"><i class="glossterm">Obfuscated C Contest</i></a> entries
have been quines that reproduced in exotic ways. There is an amusing
<a href="http://www.nyx.org/~gthompso/quine.htm" target="_top"> Quine Home
Page</a>.</p></dd><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="quick-and-dirty.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="../Q.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Quirk-objection.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">quick-and-dirty </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Quirk objection</td></tr></table></div></body></html>