Informatika munduan, ***quine*** bat bere iturburu kode irteera bezala duen programa bat da. Dibertsiotzat, hainbat programatzailek saiatzen dira quine-ik motzena sortzen edozein programazio lengoaian.

Oharra: tranpatzat hartzen da kodea-iturriaren edukia hartzea, eta hau inprimatzea.

Adibideak
---------

### C

```
#include<stdio.h>
char\*i="\\#include<stdio.h>",n='\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);}

```

### C#

```
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);
 }
 }
}

```

### Scheme

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

```

### Lisp

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

```

### Ocaml

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

```

### Python

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

```

### JavaScript

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

```

### Perl

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

```
Adibide laburrago bat:

```
open+0;print<0>

```
Perl eta shell script-aren konbinazioa:

```
perl -le '$n=q{perl -le a$n=q{$x};($\_=$n)=~s/\141/\47/g;s/\$x/$n/;printa};($\_=$n)=~s/\141/\47/g;s/\$x/$n/;print'

```

### BASIC

```
10 LIST

```

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

```

### Brainfuck

Lerro bakar batean idatzi da irakurketa errazteko:

```
 ->+>+++>>+>++>+>+++>>+>++>>>+>+>+>++>+>>>>+++>+>>++>+>+++>>++>++>>+>>+>++>++>
 +>>>>+++>+>>>>++>++>>>>+>>++>+>+++>>>++>>++++++>>+>>++>+>>>>+++>>+++++>>+>+++
 >>>++>>++>>+>>++>+>+++>>>++>>+++++++++++++>>+>>++>+>+++>+>+++>>>++>>++++>>+>>
 ++>+>>>>+++>>+++++>>>>++>>>>+>+>++>>+++>+>>>>+++>+>>>>+++>+>>>>+++>>++>++>+>+
 ++>+>++>++>>>>>>++>+>+++>>>>>+++>>>++>+>+++>+>+>++>>>>>>++>>>+>>>++>+>>>>+++>
 +>>>+>>++>+>++++++++++++++++++>>>>+>+>>>+>>++>+>+++>>>++>>++++++++>>+>>++>+>>
 >>+++>>++++++>>>+>++>>+++>+>+>++>+>+++>>>>>+++>>>+>+>>++>+>+++>>>++>>++++++++
 >>+>>++>+>>>>+++>>++++>>+>+++>>>>>>++>+>+++>>+>++>>>>+>+>++>+>>>>+++>>+++>>>+
 [[->>+<<]]<+]+++++[->+++++++++<]>.[+]>>[<<+++++++[->+++++++++<]>-
 .------------------->-[-<.<+>>]<[+]<+>>>]<<<[-[-[-[>>+<++++++[->+++++<]]>++++
 ++++++++++<]>+++<]++++++[->+++++++<]>+<<<-[->>>++<<<]>[->>.<<]<<]

```

### HQ9+

```
Q

```

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

```

### PHP

```
<?
$a='chr(60).chr(63).chr(10).chr(36).chr(97).chr(61).chr(39).$a.chr(39).chr(59).chr(10)."echo $a;".chr(10).chr(63).chr(62)';
echo chr(60).chr(63).chr(10).chr(36).chr(97).chr(61).chr(39).$a.chr(39).chr(59).chr(10)."echo $a;".chr(10).chr(63).chr(62);
?>
 
<?
$a='<?
$a=2;
echo str\_replace(1+1,chr(39).$a.chr(39),$a);
?>';
echo str\_replace(1+1,chr(39).$a.chr(39),$a);
?>

```

### PL/I

```
%dcl z%z='put edit';proc options(main;q=''''put list(m;do i=1,2;z(q)skip;do j=
1to 78c=substr(m(i),j;if c=q z(c;z(c;end;z(q',';dcl(c,q)char,m(2)char(99)init(
'%dcl z%z=''put edit'';proc options(main;q=''''''''put list(m;do i=1,2;z(q)skip;do j=',
'1to 78c=substr(m(i),j;if c=q z(c;z(c;end;z(q'','';dcl(c,q)char,m(2)char(99)init(',

```

### PostScript

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

```

### Visual FoxPro

```
CLEAR
SET TALK OFF
SET TEXTMERGE ON
\CLEAR
\SET TALK OFF
\SET TEXTMERGE ON

```

Kanpo estekak
-------------

|  |  |
| --- | --- |
| Autoritate kontrola | 
* **Wikimedia proiektuak**
* Wd Datuak: Q1047886
* Commonscat Multimedia: Quine (computer program)

---

 |

* Wd Datuak: Q1047886
* Commonscat Multimedia: Quine (computer program)