Ce défi est similaire à Can you Meta Quine?
Une quine est un programme qui se produit lui-même sur STDOUT. Ce défi est de produire un programme A qui lors de l'exécution produit un programme B sur STDOUT. Le programme B lorsqu'il est exécuté produit le programme A sur STDOUT. Les programmes A et B doivent être écrits (et exécutés) dans la même langue. La question liée contraint A! = B. Cela semblait trop facile. Donc, pour cette question, nous insistons sur le fait que A et B sont des antiquines, en utilisant les règles suivantes:
- Les programmes A et B ne peuvent pas utiliser les mêmes caractères, sauf pour les espaces blancs et les séparateurs d'instructions et les caractères de ponctuation.
- Les programmes A et B doivent chacun contenir au moins un caractère qui n'est ni un espace ni un séparateur d'instructions, ni un caractère de ponctuation.
- Aux fins des règles 1 et 2, le terme «espace» exclut tout symbole ou séquence de symboles qui lui-même est une instruction, un opérateur ou un symbole qui est interprété (par opposition à un séparateur). Par conséquent, dans le langage des espaces blancs, il n'y a pas d'espace blanc.
- Un séparateur d'instructions est un élément syntaxique conventionnellement utilisé dans le langage pour séparer les instructions. Cela inclurait la nouvelle ligne en python, ou le point-virgule en Java, perl ou C.
- Un caractère de ponctuation est un caractère ASCII qui n'est ni un espace ni dans la classe de caractères de mot POSIX (c'est-à-dire qu'un trait de soulignement n'est pas une ponctuation à cet effet) - c'est-à-dire
ispunct()
qu'il retournerait vrai, et ce n'est pas le cas_
. - Le programme A lors de son exécution doit produire un programme (programme B) sur son STDOUT, qui, à son tour, produit le programme A.
- Les programmes A et B doivent être dans le même langage de programmation.
- Le langage de programmation utilisé doit en fait être un langage de programmation. À moins que vous ne fassiez un bon cas, je suggérerai que Turing soit complet.
- Au moins l'un des A et B doit exécuter au moins une instruction dans le langage.
C'est le golf de code, donc la réponse la plus courte l'emporte, le score étant la longueur du programme A en octets (c'est-à-dire que la longueur du programme B n'est pas pertinente).
A
et sonta
considérés comme des "personnages" différents?Réponses:
GolfScript, 13 octets
La sortie est
qui génère le programme initial.
Le nombre d'octets inclut le LF de fin, car la sortie de la sortie le contiendra.
Essayez-le en ligne.
Comment ça fonctionne
GolfScript imprime le contenu de la pile à la fin.
la source
Programs A and B may not use any of the same characters, save for whitespace and statement separators, and punctuation characters.
1
et2
c'est la ponctuation.Pascal (731 caractères)
Programme A:
Programme de sorties B:
Programme de sorties A.
la source
ROT13 ( ne participe plus à la compétition après la mise à jour des règles )
Je ne sais pas si cela compte comme langue, mais je n'ai certainement pas rattrapé le défi. Répond habituellement à certains utilitaires tels que ceux
sed
acceptés. Cependant, c'est un appel au jugement, donc si ça ne compte pas, je le supprimerai (y a-t-il une méta-discussion quelque part sur ce qui compte comme langue? Edit: il y en a maintenant )Cycles entre
A
etN
:la source
STDIN
, pas d'exécuter un programme. Si vous faites valoir qu'il s'agit d'un programme de longueur nulle, cela ne satisfait pas à la règle 2. Le programme (avecsed
) est ce qui est passésed -e
. Si cela était acceptable, cecat
serait une quine, et cetac
serait une quine et une antiquine. Cependant, rien ne produit la sourcecat
,tac
ni d'ailleursrot13
.rot13
en tant que langage de programmation ne semble satisfaire à aucune définition raisonnable de «langage de programmation», et il n'interprète rien. Je vais modifier la question pour que ce soit plus clair.