Quine

A programmate Quine vel Quine programma est quod suum fontem codicem cum exsecutione emittit. A Quine "extra se exire" non potest, exempli gratia, extrahere contenta tabella continentis vel introspectivas facultates utens imaginem suam imprimendi. Sed suum principium habet calculare codicem.


Via classica ad talem rationem faciendam duobus gradibus fit:

  1. Filum initialize variabilis cum interpolatione placeholder.
  2. Imprime seriem litterarum et interpola eam in se ipsam .

Ars est rectam litterarum eligere. Modus hoc faciendi variat inter linguas et pendet a declaratione variabilis, necessitate semicolonum et saltuum linearum, notis citationis necessariis, et cetera. Tractatio notis citationis est interesting; invenire debes modum quo indices notam citationis imprimi debere sine ea re vera utenda.

Bash

Sicut pleraque in Bash, hoc programmate utitur an interesting vaframento. Licet singulae notae validae sint locutiones et non aliquid expandunt, interpretatum est printf octal effugium ingenia sicut ingenia cum certum codice punctum:

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

Python

In Pythone forma speciei redit %r automatice singula quotes. Facillimus si cum newline charactere signum finitur:

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

Si vis codicem sine linea rumpit, sequentia scribere debebis:

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

JavaScript

JavaScript quines currunt sub node.js. uteris console.log, quod semper novam lineam addit, ergo nova linea in fine cuiusque scripti necessaria est.:

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

Propositum hoc etiam interest: non totam suam repraesentationem imprimit, sed in eo nititur quod functiones quamdam repraesentationem habent.:

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

Proximum exemplum prope fallis quod eval usus est:

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

Rust

Rubigo viam praebet ad argumentum in virgulis concludendum in tortor print formato. Sed haec tortor requirit primum argumentum macronis impressi ut chorda litteralis sit! Optime igitur utatur argumento positionali identifier:

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

PHP

Hoc PHP programma operatur in chorda et reponenda fonte codicem illo chorda utens printf outputs. The 39 stat pro ASCII character ', ut recte tractamus quotes per filum:

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

HQ9+

Novissima sed non minima est HQ9+, a Cliff Biffle evoluta:

Q
Back