Details, Explanation and Meaning About Quine

Quine Guide, Meaning , Facts, Information and Description

This is an article about a kind of computer program. You may be looking for information on the philosopher W. V. Quine.

In computing, a quine is a program (a form of metaprogram) that produces its complete source code as its only output. For amusement, hackers sometimes attempt to develop the shortest possible quine in any given programming language.

Note that simply opening the source file of the program and printing the contents is considered cheating.

Quines are named after W. V. Quine, who made an extensive study of indirect self-reference: he coined, among others, the paradox-producing expression, "yields falsehood when appended to its own quotation."

Table of contents
1 Sample quine in C
2 Sample quine in C#
3 Sample quine in Scheme
4 Sample quine in Common Lisp
5 Sample quine in OCaml
6 Sample quine in Python
7 Sample quine in JavaScript
8 Sample quine in Perl
9 Sample quine in BASIC
10 Sample quine in Pascal
11 Sample quine in Brainfuck
12 Sample quine in HQ9+
13 Sample quine in MS-DOS Batch
14 Sample quine in PHP
15 Sample quine in PostScript
16 External links
17 See also

Sample quine in C

#include
char*i="\\\\#include",n='\
',q='"',*p=
"%s%cchar*i=%c%c%s%c,n='%cn',q='%c',*p=%c%c%s%c,*m=%c%c%s%c%c;%s%c",*m=
"int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}"
;int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}

Sample quine in C#

(Note: linebreaks added for ease of reading)
using System;
namespace quine
{
  class Program
  {
    [STAThread]
    static void Main(string[] args)
    {
      string s = "using System;{0}namespace quine{0}{2}{0}{1}class Program{0}
{1}{2}{0}{1}{1}[STAThread]{0}{1}{1}static void Main(string[] args){0}{1}{1}{2}{0}{1}{1}{1}
string s = {4}{6}{4};{0}{1}{1}{1}Console.Write(s, Environment.NewLine, {4}{5}t{4}, {4}{2}
{4}, {4}{3}{4}, {4}{5}{4}{4}, {4}{5}{5}{4}, s);{0}{1}{1}{3}{0}{1}{3}{0}{3}";
      Console.Write(s, Environment.NewLine, "\\t", "{", "}", "\\"", "\\\\", s);
    }
  }
}

Sample quine in Scheme

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

Sample quine in Common Lisp

   (funcall (lambda (x) 
              (append x (list (list 'quote x))))
            '(funcall (lambda (x) 
                         (append x (list (list 'quote x))))))

Sample quine in OCaml

(fun s -> Printf.printf "%s %S" s s) "(fun s -> Printf.printf \\"%s %S\\" s s)"

Sample quine in Python

a='a=%s;print a%%`a`';print a%`a`

Another:

b='\\\\';g='"';p='%';s="b='%s%s';g='%s';p='%s';s=%s%s%s;print s%s(b,b,g,p,g,s,g,p)";print s%(b,b,g,p,g,s,g,p)

And another one that shares the last 61 characters with the previous one (just to show that multiple assignments don't save typing :)):

b,g,p,s='\\\\','"','%',"b,g,p,s='%s%s','%s','%s',%s%s%s;print s%s(b,b,g,p,g,s,g,p)";print s%(b,b,g,p,g,s,g,p)

Sample quine in JavaScript

unescape(q="unescape(q=%22*%22).replace('*',q)").replace('*',q)

Sample quine in Perl

$_=q{$_=q{Q};s/Q/$_/;print};s/Q/$_/;print

Sample quine in BASIC

10 C=": PRINT CHR(49)+CHR(48)+CHR(32)+CHR(67)+CHR(61)+CHR(34)+C+CHR(34)+C":
   PRINT CHR(49)+CHR(48)+CHR(32)+CHR(67)+CHR(61)+CHR(34)+C+CHR(34)+C

Sample quine in Pascal

const a='const a=';b='begin write(a,#39,a,#39#59#98#61#39,b,#39#59#10,b) end.';
begin write(a,#39,a,#39#59#98#61#39,b,#39#59#10,b) end.

Sample quine in Brainfuck

(Note: This should be one continuous line of code, but line breaks have been added for ease of reading.)

\n ->+>+++>>+>++>+>+++>>+>++>>>+>+>+>++>+>>>>+++>+>>++>+>+++>>++>++>>+>>+>++>++>\n +>>>>+++>+>>>>++>++>>>>+>>++>+>+++>>>++>>++++++>>+>>++>+>>>>+++>>+++++>>+>+++\n >>>++>>++>>+>>++>+>+++>>>++>>+++++++++++++>>+>>++>+>+++>+>+++>>>++>>++++>>+>>\n ++>+>>>>+++>>+++++>>>>++>>>>+>+>++>>+++>+>>>>+++>+>>>>+++>+>>>>+++>>++>++>+>+\n ++>+>++>++>>>>>>++>+>+++>>>>>+++>>>++>+>+++>+>+>++>>>>>>++>>>+>>>++>+>>>>+++>\n +>>>+>>++>+>++++++++++++++++++>>>>+>+>>>+>>++>+>+++>>>++>>++++++++>>+>>++>+>>\n >>+++>>++++++>>>+>++>>+++>+>+>++>+>+++>>>>>+++>>>+>+>>++>+>+++>>>++>>++++++++\n >>+>>++>+>>>>+++>>++++>>+>+++>>>>>>++>+>+++>>+>++>>>>+>+>++>+>>>>+++>>+++>>>+\n [[->>+<<]<+]+++++[->+++++++++<]>.[+]>>[<<+++++++[->+++++++++<]>-\n .------------------->-[-<.<+>>]<[+]<+>>>]<<<[-[-[-[>>+<++++++[->+++++<]]>++++\n ++++++++++<]>+++<]++++++[->+++++++<]>+<<<-[->>>++<<<]>[->>.<<]<<]\n

Sample quine in HQ9+

Q

Sample quine in MS-DOS Batch

 @echo off
 %1 %2
 call %0 goto e %%
 call %0 goto e %%3 echo.%%4
 echo :f
 goto f
 :e
 echo.%4@echo off
 echo.%4%31 %32
 echo.%4call %30 goto e %3%3
 echo.%4call %30 goto e %3%33 echo.%3%34
 echo.%4echo :f
 echo.%4goto f
 echo.%4:e
 :f

Sample quine in PHP

 

 ';
 echo str_replace(1+1,chr(39).$a.chr(39),$a);
 ?>

Sample quine in PostScript

 (dup == {dup cvx exec} pop 8 12 getinterval =)
 dup cvx exec

External links

See also

 

This is an Article on Quine. Page Contains Information, Facts Details or Explanation Guide About Quine


Google
 
Web www.E-paranoids.com

Search Anything