Quine en Python

Une quine en informatique, c’est un programme qui, quand il est exécuté, affiche un code source qui permet d’obtenir le même résultat. La plupart des quines affichent leur propre code. Évidement, ouvrir le fichier de code et l’afficher ne compte pas comme une quine valide…

C’est un exercice beaucoup plus difficile qui n’en à l’air, même si normalement tout langage turing complet en est capable.

Techniquement, la quine la plus courte en Python est un fichier vide, ce qui est une quine valide. Mais comme ce n’est pas très fun, voici un exemple court avec des vrais caractères ASCII dedans:

a='a=%s;print a%%`a`';print a%`a`

Notez l’emploie de variables qui ne servent à rien d’autre que d’optenir une forme de symétrie.

Une autre version plus longue :

 b='\\';g='"';p='%';s="b='%s%s';g='%s';p='%s';s=%s%s%s;print s%s(b,b,g,p,g,s,g,p)";print s%(b,b,g,p,g,s,g,p)

Beaucoup de quines utilisent ce principe de créer une chaîne contenant une partie du programme et d’afficher et évaluer la chaîne en même temps. Parfois avec des boucles :

x = ['print "x =", x', 'for m in x: print m']
print "x =", x
for m in x: print m

En Python, on peut évidement faire des variantes avec sys.write, exec, etc. Voici un article qui liste des snippets tordus et sympathiques pour y arriver.

Pour les plus tarés, il y existe des quines mathématiques. Une formule dont la courbe… représente la formule O_o !

Ça ne sert strictement à rien, mais c’est dimanche, personne ne va lire cet article de toute façon.

Articles similaires:

  1. Qu’est-ce que c’est con un geek
  2. Pendant ce temps, à Vera Cruz
  3. Sortir de plusieurs boucles for imbriquées en Python
  4. Python love: les listes en intension (partie 1)
  5. Le _ (underscore) dans le shell interactif Python

flattr this!

6 comments

  1. C’est vrai, je ne l’ai pas lu.

    Quine préférerait pas passer son dimanche à faire des choses plus utiles ?

    goto 10

  2. Anabis

    obtenir*
    Je vais essayer ça, en tant que grand débutant en C. Merci d’occuper mon Dimanche.

  3. On a venu, on a lu, et on a ru.
    C’est Dimanche; jour de foie gras.

  4. pierreghz

    J’ai lu la page de David Madore, il y a longtemps, et il se casse la tête à faire ça en C.

    http://www.madore.org/~david/computers/quine.html

  5. Policier Moustachu

    Hey! C’est Black Adder, pas Mr. Bean.

Flux RSS des commentaires

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Jouer à mario en attendant que les autres répondent