I-Quine

Uhlelo lwe-Quine noma i-Quine wuhlelo olukhipha ikhodi yalo yomthombo lapho lwenziwa. I-Quine akumele "iphumele ngaphandle kwayo" ngokuthi, ngokwesibonelo, iphrinte okuqukethwe kwefayela eliqukethe noma isebenzise amakhono okuzihlola ukuze iphrinte izethulo zayo. Kunalokho, kufanele ibale ikhodi yayo yomthombo.


Indlela yakudala yokwenza uhlelo olunjalo yenzeka ngezinyathelo ezimbili:

  1. Qalisa iyunithi yezinhlamvu eguquguqukayo ngesibambi sendawo ukuze kuhunyushwe.
  2. Phrinta intambo bese uyihlanganisa ibe yiyo ngokwayo .

Icebo ukukhetha umucu ofanele. Indlela yokwenza lokhu iyahlukahluka kuye ngolimi futhi incike ekumemezelweni okuguquguqukayo, isidingo sama-semicolon kanye nokuhlukana kwemigqa, izimpawu zokucaphuna ezidingekayo, njalo njalo. Ukuphatha izimpawu zokucaphuna kuyathakazelisa; kufanele uthole indlela yokubonisa ukuthi uphawu lokucaphuna kufanele luphrintwe ngaphandle kokusebenzisa lona.

Bash

Njengezinto eziningi ku-Bash, lolu hlelo lusebenzisa i-quirk ethokozisayo. Nakuba izingcaphuno ezingashadile ziyizingcaphuno ezinamandla futhi zingandisi lutho, zihunyushwa printf izinhlamvu zokuphunyuka ze-octal njengezinhlamvu ezinephoyinti lekhodi elishiwo:

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

Inhlwathi

Ku-Python, isicacisi sefomethi siyabuya %r ngokuzenzakalelayo izingcaphuno single. Kulula kakhulu uma ikhodi igcina ngohlamvu olusha:

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

Uma ufuna ikhodi ngaphandle kokunqanyulwa komugqa, kufanele ubhale okulandelayo:

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

IJavaScript

Ama-Quines alandelayo e-JavaScript asebenza ku-Node.js. usebenzisa console.log, ehlala ihlanganisa umugqa omusha, ngakho-ke umugqa omusha uyadingeka ekugcineni kwawo wonke umbhalo:

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

Uhlelo olulandelayo nalo luyathakazelisa: aluphrinti konke ukumelwa kwalo, kodwa luncike eqinisweni lokuthi imisebenzi inokumelwa okuthile.:

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

Isibonelo esilandelayo siseduze nokukopela ngoba eval esetshenzisiwe:

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

Ukugqwala

I-Rust inikeza indlela yokufaka ingxabano kumakhrothi ku-macro yayo yokuphrinta efomethiwe. Kodwa-ke, le macro idinga ukuthi ingxabano yokuqala ye-macro yokuphrinta ibe iyunithi yezinhlamvu engokoqobo! Ngakho-ke kungcono kakhulu ukusebenzisa isihlonzi sempikiswano yesikhundla:

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

I-PHP

Lolu hlelo lwe-PHP lusebenza ngokugcina ikhodi yomthombo ochungechungeni bese usebenzisa leyo ntambo printf imiphumela. I 39 imele uhlamvu lwe-ASCII ', ukuphatha kahle izingcaphuno kuyunithi yezinhlamvu:

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

HQ9+

Okokugcina, i-HQ9+, ithuthukiswe nguCliff Biffle:

Q
Emuva