Écrivez un morceau de code qui prend une chaîne en entrée et génère un morceau de code dans le même langage qui, une fois exécuté, produira la chaîne d'entrée initiale.
Il doit être capable de gérer n'importe quelle combinaison de caractères AZ, az et 0-9.
Exemple en Python:
import sys
print "print('" + sys.argv[1] + "')"
Étant donné l'entrée de testing123
, il reviendra print('testing123')
.
Puisqu'il s'agit de code-golf , la réponse la plus courte en octets gagnera.
code-golf
code-generation
Quartzique
la source
la source
Réponses:
pl , 0 octet
Code:
Essayez-le en ligne!
Explication:
Un programme vide dans pl est simplement un programme cat, produisant exactement la même chose que l'entrée.
En pl, tous les caractères ASCII sont essentiellement des variables, mais lorsque la variable n'existe pas (encore), pl suppose qu'ils font partie d'une chaîne.
la source
cat
interprète. ;)brainfuck ,
565533 octets1 octet enregistré grâce à Gravitron, et 22 octets enregistrés grâce à Jo King!
Essayez-le en ligne!
La sortie nécessite un interpréteur qui encapsule le dépassement de mémoire et a EOI = 0. TIO a un tel interprète.
Explication
--[>+<++++++]
initialise la bande avec un seul+
.La boucle d'entrée:
Autres solutions
Chaque ligne est sa propre solution.
la source
+++++++++++++++
par+++[>+++++<-]>
(à partir des constantes brainfuck )0
, avec un pointeur sur une valeur.+
incrémente la valeur,-
décrémente la valeur,>
déplace le pointeur vers la droite,<
déplace le pointeur vers la gauche,,
lit l'entrée du pointeur sous forme de caractère ASCII,.
sort la valeur du pointeur sous forme de caractère ASCII,[
démarre une boucle et]
passe à la valeur correspondante[
si le la valeur du pointeur n'est pas0
. Je suis mal à expliquer, mais c'est aussi facile que Brainfuck. Et Nice golf Conor!Mornington Crescent , 27640 octets
Essayez-le en ligne!
Explication
Tout d'abord, un petit rappel sur Mornington Crescent:
Étant donné que l'impression des chaînes est difficile (voir le programme "Hello, World!" De Martin Ender Mornington Crescent ), nous aurons besoin d'un modèle simple qui peut être utilisé pour produire des chaînes génériques. Étant donné que la longueur des programmes générés n'a pas d'importance, je me suis installé sur ceci:
Nous devrons générer chaque caractère séparément et les concaténer, car l'approche de sous-chaîne utilisée par Martin est beaucoup plus difficile à mettre en œuvre dans le cas général. Paddington est la station qui effectue la concaténation des chaînes. Lorsque vous arrivez à Paddington, les événements suivants se produisent:
Ce comportement est utilisé pour initialiser Paddington à la chaîne vide qui est supposée être l'entrée.
Allez à Seven Sisters, qui définit l'accumulateur à 7 et stockez-le dans la banque. La banque est le seul moyen de copier des valeurs - Hammersmith est une copie en lecture seule de la valeur de la banque.
Divisez 7 par 7 pour obtenir 1, un diviseur de toutes les valeurs ASCII que nous devons prendre en charge.
Pour chaque personnage, commencez par copier le 1 dans Upminster.
Ajoutez-en d'autres si nécessaire.
Terminez en allant à Upminster une seule fois, pour conserver la nouvelle valeur dans l'accumulateur au lieu de la stocker à nouveau. Apportez-le à Charing Cross pour transformer la valeur ASCII en caractère et ajoutez-la à la chaîne. Les deux dernières lignes sont là parce que j'ai mal lu les spécifications, donc je vais m'arrêter ici et commencer par jouer mon programme.
la source
Take District Line to Upminster
lignes répétées calculent la séquence des fibonacciGelée , 1 octet
Woo builtins!
La fonction intégrée
Ṿ
égalise l'entrée.Essayez-le en ligne!
Un plus intéressant:
Joint la chaîne "" "" par l'entrée.
Essayez-le en ligne!
la source
”“;
pour -1.Fusain, 1 octet
Par défaut, une chaîne de caractères ASCII
..
~
s'imprime simplement, il ne reste donc plus qu'à imprimer l'entrée.la source
C (gcc) ,
89875856 octetsEnregistré deux octets grâce à Jakob!
Essayez-le en ligne!
la source
puts
dans le programme imprimé pour économiser 2 octets, non? Ou est-ce un problème qu'il ajoute une nouvelle ligne?Japt , 2 octets
Essayez-le en ligne!
i
est une fonction qui insère une chaîne spécifiée à un index spécifié dans l'entrée.Q
est une variable qui prend par défaut un guillemet"
, et comme il n'y a pas d'index donné, c'est par défaut0
. Le résultat final est un guillemet inséré au début de la chaîne, que Japt termine automatiquement lors de l'exécution.Cela fonctionne sur les chaînes contenant tout sauf
"
,{
ou\
bien que la chaîne soit bien sûr composée de caractères alphanumériques donc cela n'a pas d'importance.la source
Python 2 , 22 octets
Essayez-le en ligne!
la source
print'print'+`input()`
.input
en Python 2 est équivalent àeval(raw_input())
. Il doit donc s'agir d'une expression pythonique pour que cela fonctionne.MATLAB / Octave , 15 octets
Essayez-le en ligne!
J'ai complètement ignoré le fait que le programme n'a besoin que de gérer les caractères alphanumériques ou, surtout, n'a pas besoin de gérer les caractères d'espacement. Cela signifie que nous pouvons utiliser la syntaxe «commande», qui utilise beaucoup moins d'octets.
MATLAB, 27 octets
Pour être complet, voici une version qui peut gérer des entrées arbitraires:
Définit une fonction anonyme prenant la chaîne
t
et la convertit en programme. Curieusement, cela ne fonctionne pas dans Octave, qui semble avoir des idées différentes sur ce qu'ilmat2str
faut faire.la source
@(t)['disp ',mat2str(t)]
devrait fonctionner ...?mat2str
ajoute des guillemets, qui ne sont pas nécessaires dans la syntaxe des commandes. J'ai eu la syntaxe de la fonction combinée avecmat2str
pour gérer les espaces dans l'entrée, mais en relisant le défi, ce n'est pas vraiment nécessaire, réduisant le nombre d'octets presque de moitié. Merci!Befunge-98 (FBBI) ,
211612 octets-5 octets grâce à NieDzejkob
-4 octets grâce à Jo King
Essayez-le en ligne!
Sorties
't,'e,'s,'t,@
pour une entrée detest
Comment?
Initialement, le pointeur se déplace vers l'est:
S'il ne reste plus d'entrée,
~
inverse la direction du pointeur:la source
Emojicode , 88 octets
Essayez-le en ligne!
Contribution:
Sortie:
Sortie de script:
la source
QBIC , 7 octets
Explication
Exemple d'exécution
La sortie est un littéral de chaîne contenant l'entrée, précédé d'une
PRINT
commande.la source
Lot 11 octets
Je suis sûr qu'il y a loin pour le réduire, mais c'est assez petit.
La ventilation:
En anglais:
L'utilisateur est invité à entrer une phrase principale
echo
. Ensuite, l'utilisateur peut taper quoi que ce soit, et le programme se termine (par exemple;echo hello world!
). Cela nous laisse avec un programme qui, une fois exécuté, sortirahello world!
.Oui, l'espace est censé être là
la source
echo
partie ne serait-elle pas renvoyée en texte à la console et non à la sortie du programme?echo
en sortie standard. En fait, (je suppose) si l'entrée provient d'un fichier ou d'un canal, tout ce que vous voyez est l'invite. Ce type de sortie a-t-il été autorisé?V, 2 octets
Dans Vim,
i
passe en mode insertion et permet l'insertion de texte. Dans ce cas, il insère juste lei
devant du texte d'entrée (pour créer le deuxième programme). V est compatible avec Vim, mais ajoute un implicite<esc>
à la fin du programme, donc je n'ai pas besoin de m'en inquiéter ici.la source
PowerShell, 9 octets
les guillemets simples ou doubles dans powershell peuvent être utilisés pour contenir des chaînes, mais seuls les guillemets doubles permettent l'expansion variable.
avec une entrée de
foo
ce qui sortira'foo'
qui est un programme PowerShell valide qui sortfoo
la source
Cubiquement , 87 octets
Essayez-le en ligne!
Un port de ma réponse ici . Il existait déjà un défi pour prendre en entrée et en sortie le code Cubically qui a produit cette entrée, et j'avais une réponse dans Cubically alors ... profit?
la source
%6
s et@6
s; ils peuvent désormais être appelés implicitement. (Vous pouvez également le faire sur votre réponse sur le fil du cubificateur.)D,
9289 octetsEssayez-le en ligne!
la source
Python 2 , 17 octets
Essayez-le en ligne!
la source
1
'1'
à la fonction, elle sort correctementprint'1'
SOGL V0.12 , 2 octets
Essayez-le ici! (attend l'entrée sur la pile et
,
est donc ajoutée pour une facilité d'utilisation)$
pousse”
,+
rejoint cela après l'entrée sur la pile.la source
"
.Perl 6 , 19 octets
Essayez-le
Cela devrait fonctionner pour toute entrée Unicode dans NFC
la source
8ème ,
3437 octetsCode
Exemple
la source
PHP , 12 octets
Essayez-le en ligne!
Cela doit être exécuté à partir de la ligne de commande avec l'entrée comme argument de paramètre. Et oui, il affiche simplement la chaîne d'entrée, mais c'est du PHP valide: tout ce qui se trouve en dehors des
<?php
?>
délimiteurs est sorti non traité.Voici le script produit par l'entrée «testing123» en action comme démonstration: Essayez-le en ligne!
la source
<?php
, faites attention;)MATL , 2 octets
Essayez-le en ligne!
Entoure simplement la chaîne de guillemets en utilisant
&D
, ce qui est l'équivalent de MATL à MATLABmat2str
, une fonction spécialement conçue pour créer quelque chose qui, lorsqu'elleeval
sera donnée , donnera la matrice d'origine (ou dans ce cas, une chaîne).Le «programme» résultant n'est que la chaîne d'entrée entourée de guillemets, qui est ainsi poussée sur la pile et affichée implicitement.
la source
eacal , 38 octets
Essayez-le en ligne!
Ajoute simplement la chaîne
put string
à la chaîne de mémoire, puis ajoute l'argument, qui est imprimé.la source
Lot, 14 octets
Fonctionne également pour les caractères spéciaux s'ils sont cités à l'aide de
"
s plutôt que^
.la source
@echo.@echo.%*
Serait peut -être plus correct? L'entrée peut être potentiellement vide..
parce qu'il n'est jamais vide, et j'ai utilisé un(
pour le deuxième cas parce que c'est plus fiable que.
, mais merci pour les suggestions quand même!@echo.
s lolLy , 14 octets
Essayez-le en ligne!
Explication
la source
05AB1E , 3 octets
Essayez-le en ligne!
Entrée surround avec guillemets.
-1 @Adnan.
la source
Brain-Flak ,
9268 octets-22 octets grâce à Wheat Wizard
Comprend +2 pour
-cr
Essayez-le en ligne!
la source
Pyth ,
21 octetEssayez-le en ligne!
Sort juste l'entrée. Nécessite que les chaînes soient entre guillemets.
-1 octet grâce à KarlKastor
la source
+\"
? (caractère\x
littéral + impliciteQ
)+N
Carotte , 1 octet
Comment ça marche
Une alternative, également à 1 octet, est:
Cela fonctionne de la même manière que ci-dessus mais ne prend que la première ligne d'entrée. Voir comme entrée ne sera jamais que très
[A-Za-z0-9]
bien.la source
01
?