Quine (programa)
Tresnak
Orokorra
Inprimatu/esportatu
Beste proiektuetan
Informatika munduan,quine bat bereiturburu kode irteera bezala duen programa bat da. Dibertsiotzat, hainbatprogramatzailek saiatzen dira quine-ik motzena sortzen edozeinprogramazio lengoaian.
Oharra: tranpatzat hartzen da kodea-iturriaren edukia hartzea, eta hau inprimatzea.
#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);}";intmain(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}
usingSystem;namespacequine{classProgram{[STAThread]staticvoidMain(string[]args){strings="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);}}}
((lambda(x)(listx(list(quotequote)x)))(quote(lambda(x)(listx(list(quotequote)x)))))
(funcall(lambda(x)(appendx(list(list'quotex)))))'(funcall(lambda(x)(appendx(list(list'quotex))))))
(funs->Printf.printf"%s %S"ss)"(fun s -> Printf.printf\"%s %S\" s s)"
a='a=%s;print a%%`a`';printa%`a`
unescape(q="unescape(q=%22*%22).replace('*',q)").replace('*',q)
$_=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'
10LIST
consta='const a=';b='begin write(a,#39,a,#39#59#98#61#39,b,#39#59#10,b) end.';beginwrite(a,#39,a,#39#59#98#61#39,b,#39#59#10,b)end.
Lerro bakar batean idatzi da irakurketa errazteko:
->+>+++>>+>++>+>+++>>+>++>>>+>+>+>++>+>>>>+++>+>>++>+>+++>>++>++>>+>>+>++>++>+>>>>+++>+>>>>++>++>>>>+>>++>+>+++>>>++>>++++++>>+>>++>+>>>>+++>>+++++>>+>+++>>>++>>++>>+>>++>+>+++>>>++>>+++++++++++++>>+>>++>+>+++>+>+++>>>++>>++++>>+>>++>+>>>>+++>>+++++>>>>++>>>>+>+>++>>+++>+>>>>+++>+>>>>+++>+>>>>+++>>++>++>+>+++>+>++>++>>>>>>++>+>+++>>>>>+++>>>++>+>+++>+>+>++>>>>>>++>>>+>>>++>+>>>>+++>+>>>+>>++>+>++++++++++++++++++>>>>+>+>>>+>>++>+>+++>>>++>>++++++++>>+>>++>+>>>>+++>>++++++>>>+>++>>+++>+>+>++>+>+++>>>>>+++>>>+>+>>++>+>+++>>>++>>++++++++>>+>>++>+>>>>+++>>++++>>+>+++>>>>>>++>+>+++>>+>++>>>>+>+>++>+>>>>+++>>+++>>>+[[->>+<<]]<+]+++++[->+++++++++<]>.[+]>>[<<+++++++[->+++++++++<]>-.------------------->-[-<.<+>>]<[+]<+>>>]<<<[-[-[-[>>+<++++++[->+++++<]]>++++++++++++++<]>+++<]++++++[->+++++++<]>+<<<-[->>>++<<<]>[->>.<<]<<]
Q
@echo off%1%2call%0 goto e%%call%0 goto e%%3 echo.%%4echo :fgotof:eecho.%4@echo offecho.%4%31%32echo.%4call%30 goto e%3%3echo.%4call%30 goto e%3%33 echo.%3%34echo.%4echo :fecho.%4goto fecho.%4:e:f
<?$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)';echochr(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);?>';echostr_replace(1+1,chr(39).$a.chr(39),$a);?>
%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(',(dup == {dup cvx exec} pop 8 12 getinterval =)dupcvxexec
CLEARSET TALK OFFSET TEXTMERGE ON\CLEAR\SET TALK OFF\SET TEXTMERGE ON