Thứ Bảy, 15 tháng 5, 2004


Quine = Self-Reproducing Code



Metamagical Themas: Questing for the Essence of Mind and PatternI received a note from AG regarding self-reproducing code. "I presume by now you have seen a kazillions of these"...



...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. 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...




The Quine Page

Không có nhận xét nào:

Đăng nhận xét