Quine

ʻO kahi polokalamu Quine a i ʻole Quine kahi papahana e hoʻopuka ana i kāna kumu kumu ponoʻī ke hoʻokō ʻia. ʻAʻole hiki i kahi Quine ke "paʻi i waho iā ia iho", no ka laʻana, ke paʻi ʻana i nā ʻike o ka faila i loaʻa iā ia a i ʻole ka hoʻohana ʻana i nā mana introspective e paʻi i kāna hōʻike ponoʻī. Akā, pono ia e helu i kāna code kumu pono'ī.


ʻO ke ala maʻamau e hana ai i kahi papahana e hana ʻia i ʻelua mau ʻanuʻu:

  1. E hoʻomaka i kahi hoʻololi kaula me kahi wahi no ka interpolation.
  2. E paʻi i ke kaula a hoʻopili iā ia iho .

ʻO ka maʻalahi ka loaʻa ʻana o ke kaula pololei. Pehea e hana ai i kēia ʻano like ʻole mai ka ʻōlelo i ka ʻōlelo a pili i ke ʻano o ka haʻi ʻia ʻana o ka mea hoʻololi, ka pono o nā semicolons a me nā laina hou, nā kaha huaʻōlelo e pono ai, etc. He mea hoihoi ka hoʻohana ʻana i nā kaha puanaʻi; Pono kekahi e ʻimi i kahi ala e hōʻike ai e paʻi ʻia kahi kaha ʻōlelo me ka ʻole o ka hoʻohana ʻana i kahi kaha ʻōlelo.

Bash

E like me ka hapa nui o nā mea ma Bash, hoʻohana kēia polokalamu i kahi quirk hoihoi. ʻOiai ʻo nā huaʻōlelo hoʻokahi he mau ʻōlelo ikaika a ʻaʻole e hoʻonui i kekahi mea, unuhi ʻia printf octal escape characters ma ke ano he mau huaolelo me ke kiko helu helu:

s='s=%s;printf "$s" "$s"';printf "$s" "$s"

Python

Ma Python, hoʻi ka mea kikoʻī format %r nā huaʻōlelo hoʻokahi wale nō. ʻOi aku ka maʻalahi inā pau ke code me kahi ʻano laina hou:

s='s=%r;print(s%%s)';print(s%s)

Inā makemake ʻoe i ke code me ka ʻole o nā laina laina, pono ʻoe e kākau i kēia:

s='s=%r;print(s%%s,sep="")';print(s%s,sep="")

ʻO JavaScript

Ke holo nei nā quines JavaScript ma lalo o node.js. hoʻohana ʻoe console.log, e hoʻopili mau i kahi laina hou, no laila pono kahi laina hou ma ka hope o kēlā me kēia palapala:

s="s=%j;console.log(s,s)";console.log(s,s)

He mea hoihoi nō hoʻi ka papahana aʻe: ʻaʻole ia e paʻi i kāna hōʻike holoʻokoʻa, akā hilinaʻi ʻo ia i ka ʻoiaʻiʻo o nā hana i kekahi hōʻike.:

(function a(){console.log('('+a+')()')})()

ʻO ka laʻana aʻe kokoke i ka hoʻopunipuni no ka mea eval hoʻohana ʻia:

code='var q=unescape("%27");console.log("code="+q+code+q+";eval(code)")';eval(code)

ʻO ka ʻōpala

Hāʻawi ʻo Rust i kahi ala e hoʻopili ai i kahi hoʻopaʻapaʻa i loko o nā huaʻōlelo i loko o kāna macro paʻi ʻia. Eia naʻe, pono kēia macro i ka hoʻopaʻapaʻa mua o ka macro paʻi ʻia he string literal! No laila ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ka ʻike hoʻopaʻapaʻa positional:

fn main(){print!("fn main(){{print!({0:?},{0:?})}}","fn main(){{print!({0:?},{0:?})}}")}

PHP

Hana kēia polokalamu PHP ma ka mālama ʻana i ke code kumu i loko o kahi kaula a laila hoʻohana i kēlā kaula printf nā mea hoʻopuka. ʻO ka 39 kū no ke ʻano ASCII ', e mālama pono i nā huaʻōlelo ma ke kaula:

<?php
$code = '<?php
$code = %c%s%c;
printf($code, 39, $code, 39);
';
printf($code, 39, $code, 39);

HQ9+

ʻO ka mea hope loa ʻo HQ9+, i hoʻomohala ʻia e Cliff Biffle:

Q
Hope