En se référant aux codes de caractères ASCII imprimables en décimal, nous savons que de 32 à 126, nous avons les caractères imprimables avec 32 étant (espace). Votre défi est d'écrire un programme utilisant uniquement des caractères de 32 à 125 (à l'exception de 126) qui, une fois exécuté, imprime son propre code source, sauf que chaque caractère du code source a son code ASCII augmenté d'une unité.
Par exemple, si le code source était
main(){printf("Hello World");}
sa sortie serait
nbjo)*|qsjoug)#Ifmmp!Xpsme#*<~
Sont interdits:
- Lecture / écriture / utilisation de tout fichier ou stockage externe (y compris Internet)
- Lecture / écho de votre propre code source
- Codes source avec moins de 2 caractères (ils ne sont pas amusants). Doit être supérieur ou égal à 2.
Ce qui en fait un concours de popularité où après avoir attendu pendant au moins deux semaines, la réponse, dans n'importe quelle langue, avec les votes positifs les plus élevés gagne avec le plus petit nombre de caractères étant le bris d'égalité.
popularity-contest
quine
Un point fixe
la source
la source
~
vraiment nulle pour GolfScript. Je parie que vous l'avez fait exprès. :-)Réponses:
Python (27 caractères)
Dans le shell Python, le script suivant affichera le résultat souhaité:
Oui! il génère:
la source
hein? , 5 caractères
Notez que le 5ème caractère est un espace après
Ntbg
. C'est la même astuce que dans l' une de mes réponses précédentes .Ntbg
est un chemin non valide, donc l'interpréteur afficheraOuch!
Vous devriez l'exécuter comme ceci:la source
PHP (351)
Je suis sûr qu'il existe une meilleure façon de le faire, car je suis nouveau dans le golf de code, mais voici ma solution PHP:
Production:
la source
TI-BASIC, 10
Pour votre calculatrice TI-83/84!
Les sorties:
la source
GolfScript, 15 caractères
Production:
Essayez-le en ligne.
Une solution assez simple basée sur la technique que j'ai utilisée pour mon entrée au défi "rotation quine" . Le seul détail délicat est que le caractère
~
(ASCII 126) est interdit par les règles de défi, donc je ne peux pas l'utiliser pour exécuter mon bloc de code. Heureusement,1*
peut être utilisé comme synonyme de celui-ci.Explication:
Le bloc de code
{`{)}%"/2+"}
est dupliqué par le.
, et la deuxième copie exécutée par1*
(techniquement, une boucle d'une itération), laissant l'autre copie sur la pile. À l'intérieur du bloc de code,`
stringifie le bloc de code et{)}%
boucle (les codes ASCII de) ses caractères, en les incrémentant chacun d'un. Enfin,"/2+"
pousse la chaîne littérale/2+
(qui est.1*
décalée d'une unité) sur la pile. À la fin du programme, l'interpréteur GolfScript imprime alors automatiquement tout sur la pile.Ps. Oui, je sais qu'il s'agit d'un concours de popularité plutôt que d'un code-golf strict , mais que vais-je faire d'autre avec GolfScript - l'art ASCII? ;-)
la source
JavaScript, 117 caractères
Je sais que ce n'est pas du golf codé, mais je l'ai quand même joué au golf.
(Je ne lis pas mon propre code source; j'utilise simplement la fonction de l'
Function
objettoString
.)la source
Java - 1331 octets, 618 octets et 504 octets
Le voici en java. Ce qui est cool, c'est qu'il est assez lisible et flexible. Vous pouvez expérimenter pour changer la
SHIFT
variable à 0 et ce sera une quine. Vous pouvez le changer à la valeur que vous voulez, y compris les valeurs négatives et il décalera le code en conséquence.Cependant, le seul inconvénient de la classe précédente sont les sauts de ligne, qui ne sont pas autorisés dans la spécification de question (sont en dehors de la plage 32 à 125). Je donne donc ici une version golfée qui est exempte de sauts de ligne (et libre des bizarreries pour les gérer). Vous pouvez modifier la valeur de la
S
variable pour modifier le décalage. Cela a 618 octets:Certes, si nous abandonnons le réglage fin de l'offset et codons en dur la valeur du décalage, nous pouvons faire une version complètement golfée avec 504 octets:
la source
Perl 5, 284 caractères incluent les sauts de ligne
Ne pas être autorisé à utiliser ~ l'a rendu un peu plus délicat.
la source
Python, 99
Production:
Cela peut être raccourci à 75 caractères , mais cela imprimera un nouveau caractère de ligne après la sortie, ce qui enfreindra techniquement les règles:
la source
\x09
) à la fin, puisqu'un onglet décalé d'un est une nouvelle ligne (\x0A
). Ensuite, votre version raccourcie fonctionnerait avec 76 octets.Stax , 16 octets
Exécuter et déboguer
Adaptation du
"34bL"34bL
quine. Puisque"
devient maintenant#
ce qui n'a pas besoin d'être échappé, nous pouvons simplement l'inclure dans la chaîne.la source
Lua - 192
Assez simple,
la source
C - 156
Juste le quine C classique avec les modifications requises
PS,
sprintf(f,...,f,...)
est apparemment une faute de segmentation.la source
JavaScript (276)
Sans utiliser
.toString()
:la source
Rubis, 63
Bon sang, je ne peux pas utiliser un hérédoc sur celui-ci.
Ruby a une méthode native
.succ
qui le fait sur un caractère, et l'impression sans nouvelle ligne est plus courte que l'impression avec, donc cela fonctionne assez bien.la source
C, 153
Une autre modification de la quine classique en c ...
la source
> <>, 16 octets
Essayez-le ici!
Il s'agit plus ou moins d'une quine standard dans> <> (sans utiliser l'
g
instruction). Les seules différences sont qu'il ne lit pas son propre code source et incrémente chaque caractère de 1 avant de le sortir.Les sorties
*> <> , 15 octets (non concurrents)
Essayez-le ici!
la source
Tcl , 89 octets
Essayez-le en ligne!
Tcl , 89 octets
Essayez-le en ligne!
Deux approches; la même longueur d'octet!
la source
Haskell , 64 octets
Essayez-le en ligne!
la source
Perl 5 , 55 octets
Essayez-le en ligne!
la source
J, 42 octets
la source