La perspective de ce défi est:
- Si votre programme est exécuté normalement, tout le code des marques vocales (
"
- guillemets doubles) doit être imprimé. - Si votre programme est entouré de guillemets doubles (inversant à son tour les marques vocales), le code qui n'est normalement pas entre guillemets doit être imprimé.
Par exemple:
Disons que vous avez le code suivant:
fancyStuff("myCode"); "I like".isGreat();
Si je l'exécute, je m'attends à une sortie de:
myCode
I like
Cependant, si je le mettais entre guillemets, j'obtiendrais:
"fancyStuff("myCode"); "I like".isGreat();"
Lorsque ce code est exécuté, la sortie attendue serait:
fancyStuff(
);
.isGreat();
De toute évidence, l'exemple ci-dessus n'est une réponse fonctionnelle dans aucune langue. Votre travail consiste à écrire le code qui fonctionne de cette façon.
Règles
- Des échappatoires standard s'appliquent.
- Les valeurs imprimées, sous forme entre guillemets et sans guillemets, doivent être non vides ou être constituées uniquement d'espaces. Cela signifie également que tous les programmes doivent inclure au moins un ensemble de guillemets.
- Cependant, les espaces de fin / précédant sont autorisés.
- Ne pas regarder votre propre code, les noms de fichiers requis, etc.
- Les citations inégalées ne sont pas autorisées
- S'il y a plusieurs chaînes, elles peuvent être imprimées en tant que nouvelles lignes (comme dans l'exemple), ou d'une autre manière lisible par l'homme - pas de tableaux ou d'objets
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
code-golf
restricted-source
quine
Geza Kerecsenyi
la source
la source
Réponses:
Python 2 , 20 octets
-7 octets grâce à tsh
Essayez-le en ligne!
Ancienne réponse:
Python 2 , 27 octets
Essayez-le en ligne!
Train de pensée derrière cette réponse:
Commencez par une impression simple, car nous devons imprimer quelque chose .
Nous devons également imprimer quelque chose dans le cas inversé, c'est-à-dire. avoir une impression entre guillemets.
Le cas non inversé est assez bon à ce stade. Concentrons-nous sur le cas inversé. Nous commençons maintenant avec la chaîne
print
, qui ne peut pas être suivie immédiatement par une instruction print. Corrigeons cela avec un point-virgule.Bon produit. Sauf que le code inversé n'affiche rien. Nous devrons imprimer le
print
au début, car il se termine par des guillemets, mais aussi imprimer tout ce qui vient après le deuxième devis, car il se termine également par des guillemets. Le moyen le plus évident consiste à ajouterprint
et à multiplier la dernière chaîne par 2.Maintenant, le code inversé fonctionne très bien, mais nous devons nous méfier du fait que la section avant la première citation et la section après la deuxième citation doivent être conservées de la même manière lors des modifications futures. Quant au code non inversé, il renvoie une erreur de syntaxe - encore une fois, nous devons introduire un point-virgule pour séparer les expressions.
Python n'aime pas vraiment l'apparence de ce point-virgule solitaire, nous devons donc satisfaire la faim du serpent avec deux expressions identiques, insérées avant le premier point-virgule et le dernier point-virgule. La plupart des expressions fonctionneront bien dans le premier cas, mais dans le second cas, elles doivent suivre
print";print 2*"
le code non inversé sans rien casser. Nous pouvons utiliser''
, qui est simplement concaténé avec la chaîne précédente.la source
print(";print('print()');")
est également 27 octets, et aussi Python 3.CSS, 66 octets
Pas tellement de questions peuvent être résolues par CSS ...
la source
body:after
fonctionne également sur certaines implémentations?:after
est disponible dans la plupart des navigateurs pour des raisons de compatibilité descendanteHQ9 + [voir notes ci-dessous] , 1016 octets
Utilisez l'implémentation sur https://esolangs.org/w/index.php?title=HQ9%2B&oldid=59995 et compilez l'interpréteur avec MinGW GCC 5.3.0 sous Windows. Je ne sais pas si cela fonctionne avec une autre version du compilateur, car un comportement indéfini de C est requis pour terminer le programme. Le tampon a une longueur de 1000 octets. Et le code source supérieur à 1000 octets fait l'affaire. Je ne sais pas comment cela s'est produit.
la source
05AB1E , 4 octets
Sorties concaténées sans séparateur.
Essayez-le en ligne ou essayez-le en ligne avec les citations environnantes .
Explication:
la source
Japt , 4 octets
Essayez non cotées ou cité
P
est la variable Japt pour la chaîne vide et las
méthode découpe une chaîne - sans aucun argument, elle ne fait rien.Ou, un peu moins trivial:
Essayez non cotées ou cité
Le premier majuscule
+
et le second s'ajouteu
à une chaîne vide.la source
C # (Visual C # Interactive Compiler) ,
1131121077064 octets5 octets enregistrés grâce à @negative seven
Non cité et cité
Au bout d'un moment, j'ai réalisé que ma solution était trop compliquée. Le programme le plus récent montré ici cache simplement le reste du programme dans un commentaire pour éviter les erreurs lorsqu'il est placé entre guillemets.
Lorsqu'il est placé entre guillemets, il
Write(
est transmis à une méthode d'extension, qui l'imprime avec);
.la source
Split()
->Trim()
, etvar a
->_
Remove
etInsert
dessus, maintenant je peux simplement utiliser une méthode d'extension!Perl 6 , 11 octets
Essayez-le en ligne!
Imprime
.say~
avec une nouvelle ligne de fin. Semble trop facile. Suis-je en train de manquer quelque chose?Lorsqu'il est entouré de guillemets , produit
say
avec un espace et une nouvelle ligne de fin.la source
Foo , 4 octets
Essayez-le en ligne! Fonctionne également dans Japt.
5 octets (UTF-8)
Essayez-le en ligne! Fonctionne également dans 05AB1E.
9 octets
Essayez-le en ligne! Fonctionne également dans les enchantements runiques.
11 octets
Essayez-le en ligne! Fonctionne également en Perl 6.
20 octets
Essayez-le en ligne! Fonctionne également en Python 2.
69 octets
Essayez-le en ligne! Fonctionne également en CSS.
Hmm ... Foo est un langage hautement adaptable.
la source
"a"b
1"2"
également dans Foo. La seule réponse dans ce défi qui n'est pas un polyglotte Foo jusqu'à présent est en HQ9 +, car l'interpréteur Foo a également le problème de débordement.> <> ,
189 octets-9 octets grâce à Jo King
Essayez-le en ligne! ( cité )
Explication
la source
Befunge-98 (FBBI) , 12 octets
Non cité Coté
Les deux cas s'impriment
<@,k4
. L'un (ou les deux) des@
s peut être remplacé par à laq
place.la source
Enchantements runiques , 9 octets
Essayez-le en ligne! et
""!""$;"$;"
De Kevin Cruijssen, qui a essentiellement corrigé ma première tentative en utilisant ce que j'ai fait dans ma seconde.
En descendant sur la route "les fungoids n'ont jamais de citations incomparables", il y a quelque chose qui ne devrait pas être correct ", fait allusion dans mon propre commentaire:
7 octets
Essayez-le en ligne! et
"0".""$;"
Dans des circonstances normales, ce programme s'exécute en
0".""$;0".""$;
poussant un entier0
, puis la chaîne.
, concatène$;0
, NOP, concatène une chaîne vide, imprime le haut de la pile (la chaîne.$;0
) et se termine. L'encapsuler entre guillemets produit"0".""$;"
ce qui pousse une chaîne0
, des NOP, concatène une chaîne vide, imprime le haut de la pile et se termine (en rendant l'entier non imprimé0
sous forme de chaîne). Le dernier"
n'est pas exécuté (et ne fait de toute façon pas partie du programme d' origine ).Les fongoïdes n'ont pas de littéraux de chaîne, ils ont une commande qui bascule le mode "lire sa propre source en tant que chaîne" et une certaine forme de "pointeur d'instruction a atteint la limite de la source" (généralement le contour), donc le même code source -positional-byte agit à la fois comme instruction "chaîne de début" et "chaîne de fin", créant un littéral de chaîne de cette ligne / colonne entière (à l'exclusion de
"
lui - même).la source
$;
à la fin dans la version citée."$;
et""$;"
(guillemets récapitulatifs runiques jumelés avec eux-mêmes).!.
(ce qui est correct), mais ne devrait pas votre programme avec sortie de guillemets0$;
? PS: Je ne connais pas du tout les enchantements runiques, mais un correctif potentiel basé sur votre disposition actuelle qui, je pense, serait valide serait0"!""$;"$;
(qui sort!$;
tel quel , ou sort0$;
s'il est entouré de guillemets). EDIT: En fait, je pense que vous pouvez supprimer la0
sortie!$;
et et$;
.$
est "imprimer en haut de la pile" et se;
termine. Mais vous avez essentiellement obtenu une réponse valable.Haskell, 31 octets
Essayez-le en ligne! Ou entre guillemets: essayez-le en ligne!
la source
MathGolf , 4 octets
Essayez-le en ligne!
Le
;
etq
peut être échangé contre de nombreuses commandes différentes, y compris des no-ops.la source
Ruby , 8 octets
Essayez-le en ligne!
Encapsule la sortie entre guillemets, ce qui peut être illégal.
Rubis , 17 octets
Essayez-le en ligne!
la source
JavaScript (SpiderMonkey) , 25 octets
Essayez-le en ligne!
Essayez-le en ligne!
Trivial mais fonctionnel.
la source
Japt , 4 octets
Sans guillemets, il convertit la chaîne
P
en majuscules. Cité, il imprimeu
.Essayez-le
Japt , 4 octets
Sans guillemets, il inverse la chaîne
P
. Cité, il imprimew
.Essayez-le
la source
Q
plutôtP
, c'est plus méta! ;)R, 16 octets
Notez que le code ci-dessus n'est pas encapsulé dans les guillemets supplémentaires et comporte des espaces de début et de fin.
Essayez-le (version non enveloppée)
la source
AppleScript, 9 octets
Expliqué:
Cité:
la source