Page 1 of 1

[Mini-Challenge #12] : Quine

Unread postPosted: 18 Aug 2014, 19:16
by Adriweb
edit : oups, fail c'etait le 12


Peut-être connaissez-vous le challenge des "quine", en informatique ?
Si oui, très bien, vous n'avez plus qu'à en faire un en Nspire-Basic :D
Si non, le principe est simple : c'est une sorte de programme qui doit afficher son propre code source (seulement, et complètement/exactement).

Plus d'informations et d'exemples ici : http://fr.wikipedia.org/wiki/Quine_(informatique)

Note : Le Define ... EndPrgm doit y être.

Le gagnant sera celui qui aura réussi à faire le quine le plus court :)
(les codes seront testés sur TINCS 3.6+)

Source de l'idée : JWinslow23 sur Omni (sur un post qui n'existe plus, d'ailleurs), même si je connaissais le principe depuis bien longtemps :D

Topic-frère en Nspire-Lua : viewtopic.php?f=19&t=15085
(Et s'il y a des intéressés, vous pouvez lancer un autre topic-frère dans la section z80)

Re: [Mini-Challenge #11] : Quine

Unread postPosted: 19 Aug 2014, 08:44
by critor
En voici un premier en 124 caractères.
Image

La sortie du programme et son code source sont bien identiques :)

Re: [Mini-Challenge #11] : Quine

Unread postPosted: 19 Aug 2014, 09:07
by critor
Baissé à 120 caractères:
Image

Re: [Mini-Challenge #11] : Quine

Unread postPosted: 19 Aug 2014, 09:17
by critor
Descendu à 113 en utilisant non plus une chaîne, mais une liste de chaînes:
Image

Re: [Mini-Challenge #11] : Quine

Unread postPosted: 19 Aug 2014, 09:52
by Adriweb
Joli :)

Cependant ton premier essai est un peu plus respectueux de la règle car il garde la casse de toutes les commandes (dans le deuxième, je vois un "disp" au lieu d'un "Disp", et je ne sais pas si on peut garder la majuscule...)

Re: [Mini-Challenge #11] : Quine

Unread postPosted: 19 Aug 2014, 09:53
by critor
Bien sûr que l'on peut mettre des majuscules dans des chaînes, voyons. :)
Je n'ai pas du tout fait attention à la casse - c'est tout.

Re: [Mini-Challenge #11] : Quine

Unread postPosted: 19 Aug 2014, 11:01
by Adriweb
Ah oui, une chaîne - of course (mal lu :D ou plutôt, j'étais resté dans mes pensées sur l'usage des listes, et...)

Re: [Mini-Challenge #11] : Quine

Unread postPosted: 28 Aug 2014, 09:53
by Bisam
J'ai une version pour Voyage 200 (ou pour 68k, en général) qui fait un peu moins :
Code: Select all
quine()
Prgm
"ClrIO:Disp "":quine()"","":Prgm"","":""&string(a)&""→a"","":expr(a)"","":EndPrgm"""→a
expr(a)
EndPrgm

Malheureusement, l'affichage ne permet pas de voir la longue ligne correctement.

On peut aussi l'adapter à la Nspire (pour 109 caractères si j'ai bien compté)
Code: Select all
Define quine()=
Prgm
"Disp "Define quine()=
  Prgm
  ",string(a),"→a","
  expr(a)
  EndPrgm""→a
expr(a)
EndPrgm
(mais là, le parseur de code du forum se plante un peu puisque les guillemets entourent toute l'expression depuis "Disp..." jusqu'à "...EndPrgm"")