Quine

Barnaamijka Quine ama Quine waa barnaamij soo saara koodka isha u gaar ah marka la fuliyo. Quine waxaa laga yaabaa inaysan "ka soo bixin dibadda lafteeda" tusaale ahaan, daabacaadda waxa ku jira feylka uu ku jiro ama iyadoo la isticmaalayo awoodo hordhac ah si ay u daabacdo wakiilkeeda. Taa beddelkeeda, waa inay xisaabisaa koodka isha u gaar ah.


Habka caadiga ah ee loo abuuro barnaamijka noocan oo kale ah wuxuu u dhacaa laba tallaabo:

  1. Ku bilow doorsoomayaasha xargaha oo leh meeleeyaha isdhexgalka.
  2. Daabac xarigga oo isku dhex geli.

Xeeladdu waa doorashada xarigga saxda ah. Sida loo sameeyo tan way kala duwan tahay luqad ilaa luqad waxayna ku xiran tahay ku dhawaaqida doorsoomaha, baahida loo qabo semicolons iyo jebinta xariiqda, calaamadaha xigashada ee loo baahan yahay, iwm. Maareynta calaamadaha xigashada waa mid xiiso leh; waa inaad heshaa hab aad ku muujiso in calaamadda xigashada la daabaco iyada oo aan dhab ahaantii la isticmaalin mid.

Bash

Si la mid ah waxyaabaha ugu badan ee Bash, barnaamijkani waxa uu isticmaalaa quursi xiiso leh. In kasta oo hal-sheeggu ay yihiin xigasho xooggan oo aan waxba balaadhin, haddana la fasiray printf jilayaasha baxsadka octal sida jilayaasha leh barta koodka ee la cayimay:

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

Python

Python dhexdeeda, qaabka tilmaamuhu wuu soo noqonayaa %r si toos ah xigashooyin kali ah. Way fududahay haddii koodku ku dhammaado xarfo khad cusub:

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

Haddii aad rabto koodka bilaa xariiqda, waa inaad qortaa kuwan soo socda:

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

JavaScript

Xirmooyinka JavaScript ee soo socda ayaa hoos yimaada node.js. aad isticmaasho console.log, taas oo had iyo jeer ku dareysa sadar cusub, sidaa darteed waxaa loo baahan yahay sadar cusub dhammaadka qoraal kasta.:

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

Barnaamijkan soo socda ayaa sidoo kale xiiso leh: ma daabacdo matalaadiisa oo dhan, laakiin waxay ku tiirsan tahay xaqiiqda ah in hawluhu leeyihiin matalaad gaar ah.:

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

Tusaalaha xiga wuxuu ku dhow yahay khiyaamo sababtoo ah eval loo isticmaalo:

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

Miridhku

Daxalku waxa uu bixiyaa hab lagu lifaaqo doodda xigashooyinka ee daabacaadda qaabaysan. Si kastaba ha ahaatee, macro-kani wuxuu u baahan yahay doodda ugu horreysa ee makro-daabcadu inay noqoto xarggo sax ah! Sidaa darteed waxaa fiican in la isticmaalo aqoonsiga doodda booska:

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

PHP

Barnaamijkan PHP wuxuu u shaqeeyaa isagoo ku kaydinaya koodhka isha ee xadhig ka dibna isticmaalaya xadhigga printf wax soo saarka. The 39 waxay u taagan tahay dabeecadda ASCII ', in si sax ah loo maareeyo xigashooyinka ku jira xadhigga:

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

HQ9+

Ugu dambeyntii waa HQ9+, oo uu sameeyay Cliff Biffle:

Q
Dib u laabo