Le défi consiste à trouver une chaîne de caractères qui ne peut apparaître dans aucun programme légal dans le langage de programmation de votre choix. Cela inclut les commentaires, les chaînes ou d’autres parties "non exécutables".
Défi
- Votre programme peut être spécifique à une version ou à une implémentation particulière de l'environnement de compilation / interpréteur / exécution de votre langage. Si oui, veuillez préciser les détails.
- Seules les options standard du compilateur / interprète / runtime sont autorisées. Vous ne pouvez pas transmettre un indicateur étrange à votre compilateur pour obtenir un résultat spécifique (par exemple, passer un indicateur pour convertir les avertissements en erreurs).
- Si votre langage de programmation nécessite un codage spécifique (par exemple, UTF-8), votre chaîne doit également être correctement codée (c.-à-d. Que les chaînes qui échouent uniquement en raison d'erreurs de décodage de caractères ne sont pas autorisées).
- Chaque caractère individuel dans votre soumission doit être admissible dans un programme juridique; c'est-à-dire que vous ne pouvez pas simplement utiliser un personnage qui est toujours rejeté.
- Le compilateur / interprète / runtime doit donner une erreur à tout code source contenant votre chaîne en tant que sous-chaîne. L'erreur ne doit pas nécessairement être la même pour tous les programmes - une incorporation de votre chaîne peut provoquer une erreur de syntaxe, tandis qu'une autre peut provoquer une erreur d'exécution.
Notation
- La chaîne illégale la plus courte pour chaque langue gagne.
- Vous devez expliquer pourquoi votre chaîne est illégale (pourquoi elle ne peut apparaître nulle part dans un programme légal).
- Contester les solutions incorrectes dans les commentaires. Plus spécifiquement, vous devez fournir un lien vers TIO ou équivalent, démontrant un programme juridique (c'est-à-dire ne générant aucune erreur) contenant la sous-chaîne proposée.
- Certaines langues (par exemple, Bash, Batch, Perl) permettent d’ajouter des données binaires arbitraires à un programme sans affecter la validité (par exemple, l’utilisation
__DATA__
de Perl). Pour ces langues, vous pouvez soumettre une solution qui ne peut apparaître que dans une telle section de fin. Assurez-vous de noter cela dans votre réponse. (La définition de cette "section finale" dépend de la langue, mais signifie généralement tout texte après que l'analyseur ait complètement arrêté de lire le script).
Exemple
En Python, je pourrais soumettre
x
"""
'''
mais cela peut être intégré dans le programme plus large
"""
x
"""
'''
y
'''
donc ce n'est pas admissible.
code-challenge
restricted-source
Nneonneo
la source
la source
Réponses:
Changeling , 2 octets
C'est deux linefeeds. Un fichier de conversion valide doit toujours former un carré parfait de caractères ASCII imprimables, de sorte qu'il ne puisse pas contenir deux sauts de ligne à la suite.
L'erreur est toujours une erreur de l'analyseur et toujours la même:
accompagné du code de sortie 1 .
Essayez-le en ligne!
la source
Java, 4 octets
Essayez-le en ligne!
Ceci est une séquence d'échappement Unicode non valide et entraînera une erreur dans le compilateur.
la source
"\\u;"
.\uXXXX
fuites avant de faire quoi que ce soit d' autre, alors oui, cela fonctionnera même dans comments.zaCOBOL (GNU) , 8 octets
Tout d'abord, un saut de ligne pour vous empêcher de mettre ma parole dans une ligne commentée.
Ensuite, historiquement, les programmes COBOL étaient imprimés sur des feuilles de codage, le compilateur s’appuyait fortement sur des lignes limitées à 80 caractères, il n’existait pas de commentaires multilignes et les 6 premiers caractères étaient des commentaires (souvent utilisés comme numéros de ligne modifiables). , AUTANT QUE JE SACHE. J'ai choisi
THEGAM
au début de la ligne suivante.Ensuite, le 7ème symbole d'une ligne n'accepte qu'une liste de caractères très restreinte: Espace (pas d'effet), Asterisk (commente le reste de la ligne), Trait d'union, Slash, il peut y en avoir d'autres, mais certainement pas
E
.L'erreur donnée par GnuCobol, par exemple, est:
Essayez-le en ligne!
En outre, vous venez de perdre la partie.
la source
Also, you just lost the game.
J'ai presque votéJavaScript, 7 octets
Notez la nouvelle ligne principale.
\u)
est une séquence d'échappement Unicode non valide, raison pour laquelle cette chaîne n'est pas valide//
au début ne fonctionnera toujours pas à cause de la nouvelle ligne principale, ce qui laissera la deuxième ligne sans commentaires./*
ne sera pas décommenter la chaîne complètement en raison de la fermeture*/
qui complète, en laissant l'\u)
exposé/
après la chaîne. Ainsi, en ayant le)
devant de la chaîne\u
, nous pouvons nous assurer que le littéral de l'expression rationnelle sera toujours invalide.1||1(string)/
éviter l’évaluation de la regex. Le point-virgule au début de la deuxième ligne empêche cela de se produire en mettant fin à l'expression1||1
avant qu'elle ne touche la deuxième ligne, forçant ainsi une SyntaxError avec le;*
.Essayez le!
Afficher l'extrait de code
la source
/* */\u0045 = 3
semble valide code JavaScript.3 */\u;/
est toujours valide./
(pas que vous ayez besoin de le réparer). (En outre, le;
ne force pas l'analyse syntaxique de la mauvaise expression rationnelle, il force une syntaxeError avec le*
.)#if 0
comme on le voit ici: essayez-le en ligne!Python, 10 octets (pas cpython)
Notez la nouvelle ligne principale. Ne peut pas être commenté à cause de la nouvelle ligne, et aucune combinaison de chaînes entre guillemets triples ne devrait fonctionner si j'y pensais correctement.
Autant que je sache, @feersum dans les commentaires semble avoir complètement rompu tout programme cpython sous Windows en ajoutant le caractère 0x1A au début d'un fichier. Il semble que cela soit peut-être dû à la façon dont ce caractère est géré par le système d'exploitation. Il s'agit apparemment d'un fichier traduit en EOF, car il passe par stdin en raison d'une norme DOS ancienne.
Dans un sens très réel, ce n'est pas un problème avec python mais avec le système d'exploitation. Si vous créez un script python qui lit le fichier et utilise sa fonction intégrée
compile
, le comportement attendu de la génération d'une erreur de syntaxe est plus attendu. Pypy (qui fait probablement cela en interne) génère également une erreur.Modifier:
En raison de la diligence de @ feersum pour trouver des moyens obscurs de casser l'interpréteur Python, cette réponse est complètement invalidée pour tout environnement cpython typique, pour autant que je sache! (Python 2 et 3 pour Windows et Linux) Je pense toujours que ces fissures ne fonctionneront pas pour Pypy sur n’importe quelle plate-forme (la seule autre implémentation de Python que j’ai testée).
la source
"""?'''"""
C (clang) , 16 octets
Essayez-le en ligne!
*/
ferme tous les/*
commentaires, et l’espace principal nous assure que nous n’en avons pas commencé. La nouvelle ligne ferme tout//
commentaire et casse tout littéral de chaîne. Ensuite, nous provoquons une erreur#else without #if
ou une#else after #else
erreur (peu importe le nombre de#if 0
secondes à l'intérieur).la source
-std=c99
, mais essayons de passer à Clang.R"foobar(...)foobar"
et uniquement un paren de droite suivi du délimètre correspondant la citation va la fermer.Pyth, 6 octets
¡
est un caractère non implémenté, ce qui signifie que si l'analyseur Pyth l'évalue, il générera une erreur avec une erreur PythParseError. Ce code garantit que cela se produira sur l' une des¡
s.Un octet peut être présent dans un programme Pyth de trois manières différentes et ne pas être analysé: dans un littéral chaîne (
"
ou."
analysé de manière équivalente), dans un littéral Python ($
) et immédiatement après un\
.Ce code empêche
\
de le faire évaluer sans erreur, car cela n'affecte que l'octet immédiatement suivant et la deuxième¡
erreur.$
incorpore le code dans le$
s directement dans le code Python compilé. Je ne fais aucune hypothèse sur ce qui pourrait s'y passer.Si le programme atteint ce code dans un
$
contexte, il se terminera par le$
, et¡
juste après, l'erreur d'analyse sera affichée. Les littéraux Python de Python se terminent toujours par le suivant$
, quel que soit le comportement du code Python.Si le programme commence dans un
"
contexte, il"
finira la chaîne et la dernière¡
fera l'erreur d'analyse.la source
Ada - 2 octets
Je pense que cela devrait fonctionner:
C'est newline-underscore. Newline termine les commentaires et n'est pas autorisé dans une chaîne. Un trait de soulignement ne peut pas suivre les espaces; Auparavant, il n'était autorisé qu'après des lettres et des chiffres, mais l'introduction de Unicode a compliqué les choses.
la source
Code machine x86 32 bits, 11 octets (et compatibilité future 64 bits)
C'est
times 9 nop
/ud2
. C'est fondamentalement un slogan NOP , de sorte qu'il fonctionne toujours à 0nop
s ou plus , puisud2
à déclencher une exception, quel que soit le nombre d'0x90
octets utilisés en tant qu'opérandes dans un opcode précédent. D'autres instructions sur un seul octet (commetimes 9 xchg eax, ecx
) fonctionneraient également.Code machine x86 64 bits, 10 octets (processeurs actuels)
Il existe des instructions non autorisées d'un octet en mode 64 bits, jusqu'à ce qu'une extension ISA les réutilise en tant que préfixes ou parties d'opcodes multi-octets en mode 64 bits uniquement, distinctes de leur signification en mode 32 bits.
0x0e
estpush cs
en mode 32 bits, mais illégal sur les processeurs actuels (testé sur Intel Skylake) en 64 bits.Interprétation des règles pour le code machine exécutable :
Les octets ne peuvent pas être ignorés (comme la restriction "non analysé"), car les processeurs ne déclenchent pas d'exceptions tant qu'ils ne tentent pas de décoder / exécuter (de manière non spéculative).
Moyens illégaux soulève toujours une exception, par exemple une exception d'instruction illégale. (Les programmes réels peuvent résoudre ce problème avec un gestionnaire d'exceptions sur du métal nu ou installer un gestionnaire de signaux de système d'exploitation, mais je pense que cela reflète l'esprit du défi.)
Cela fonctionne car une chaîne d'octets plus courte finissant par
ud2
peut apparaître comme une imm32 et / ou une partie du mode d'adressage pour une autre instruction, ou être divisée en une paire d'instructions . Il est plus facile de penser à cela en termes de ce que vous pouvez mettre devant la chaîne pour "consommer" les octets dans le cadre d'une instruction et laisser quelque chose qui ne fait pas défaut.Je pense qu'une instruction peut consommer au maximum 9 octets d'éléments arbitraires: un octet SIB, un disp32 et un imm32. c'est-à-dire que les 2 premiers octets de cette instruction peuvent consommer 8 NOP et un ud2, mais pas 9.
Ne peut pas battre 9 nops:
Mode 64 bits:
Mais les octets de 8 NOPs + ud2 (ou
times 9 db 0x0e
) peuvent apparaître dans le cadre d’autres insns:la source
ud2
? Il semblerait que vous disiez que vous interprétez les règles comme interdisant de sauter par-dessus les octets, alorsud2
cela fonctionnerait-il parfaitement, non? Oh… je suppose que vous dites que le problème est queud2
peut apparaître comme préfixe d’une instruction valide? La deuxième partie de cette réponse était un peu difficile à comprendre pour moi.ud2
peuvent apparaître dansimm32
n'importe quelle instruction. J'y pensais en termes d'octets que vous pouvez mettre avant une chaîne telle que "consommer"0f 0b
dans le cadre d'une instruction précédente au lieu de le décoder en tant queud2
. Je n’étais pas totalement satisfait de la manière dont je l’ai présenté, mais je voulais expliquer pourquoi seulement 8nop
secondes ne suffisait pas et ce qui s’est passé avec 9 ansnop
+ud2
.%else
/%else
pourrait fonctionner pour vaincre%if 0
, ce qui peut normalement protéger n'importe quel texte invalide d'être analysé. (Idée tirée d'une réponse au RPC)C #, 16 octets
Fonctionne parce que:
//
le commentaire ne fonctionnera pas à cause de la nouvelle ligne/*
commentaire ne fonctionnera pas à cause de la*/
#if false
au début ne fonctionnera pas à cause de la#endif
"
ferme tout littéral de chaîne<#@#>
est une directive sans nom, donc échoue pour les modèles T4./
au départ un avantage certain.*/
Chaque variante échoue avec une erreur de compilation.
la source
APL et MATL et Fortran , 3 octets
Newline, Quote, Newline génère toujours une erreur car les commentaires de bloc n'existent pas:
unbalanced quotes
string literal not closed
Invalid character in name
la source
Haskell lettré , 15 octets
Réparation d'une tentative supprimée par Nimi.
Essayez-le en ligne!
La tentative initiale de nimi est constituée des deux dernières lignes, sur la base de Literate Haskell ne permettant pas au
>
code alphabétisé de se trouver sur une ligne voisine d'une ligne de commentaire alphabétisée (5
ici). Il a échoué car il peut être incorporé dans un commentaire dans le style de codage littéral de remplacement ("LaTeX"):Cependant, le
\begin{code}
style de Literate Haskell ne s'emboîte pas , ni en lui-même ni dans les{- -}
commentaires multilignes. En mettant une ligne\end{code}
juste avant la ligne avec le5
, la solution de contournement échoue et je ne vois pas de solution différente.la source
Free Pascal, 18 octets
Fermez d’abord tous les commentaires possibles, puis gérez la compilation conditionnelle.
S'il vous plaît commenter ici si j'ai oublié quelque chose.
la source
begin end.
.end.
la question autorise les codes postérieurs à la validité.Commodore 64 Basic, 2 octets
(c'est une nouvelle ligne suivie de la lettre "B").
Toute ligne d'un programme Commodore 64 doit commencer par un numéro de ligne ou un mot-clé BASIC. Les programmes enregistrés n'autorisent que les numéros de ligne. Il n'y a pas de mots-clés commençant par "B" (ou "H", "J", "K", "Q", "X", "Y" ou "Z").
la source
=0
cela devient alors une déclaration de mission ...Brain-Hack (une variante de Brain-Flak ),
32 octetsMerci à Wheat Wizard d’ avoir signalé que Brain-Hack ne prend pas en charge les commentaires, ce qui m’a sauvé un octet.
Essayez-le en ligne!
la source
#
TIO(()){()}
.CJam , 7 octets
Essayez-le en ligne!
la source
VBA, 2 octets
Un saut de ligne suivi d'un trait de soulignement - les
_
fonctions utilisées en tant que caractère de continuation de ligne dans VBA, et comme il n'y a rien dans la ligne directement à gauche ou au-dessus de la continuation de ligne, couplées au manque de commentaires multilignes de VBA signifie que la compilation sera toujours lancée. erreur de tempsCompile Error:
Invalid character
la source
_
, seulement qu'il n'y a pas de ligne valide à gauche ou au-dessusmyfunction(
\n_
)
:?Public Function Foo( ByVal bar as Integer, _
(Nouvelle ligne)bas as long) as double
- alors oui, cela entraînerait une erreur si vous appelez la fonction que vous avez décritemyfunction( _
\n_
)
. Désolé pour la confusion. En d'autres termes, vous auriez dû utiliser deux nouvelles lignes.SmileBASIC, 2 octets
Comme rien ne continue au-delà de la fin d'une ligne, vous avez uniquement besoin d'un saut de ligne suivi de quelque chose qui ne peut pas être le début d'une déclaration.
!
est la logique pas opérateur, mais vous n'êtes pas autorisé à ignorer le résultat d'une expression, donc même quelque chose comme!10
serait invalide (pendant que çaX=!10
marche, bien sûr)Des choses similaires fonctionneront dans toutes les langues où tout se termine à la fin d'une ligne, à condition que le code soit analysé avant de l'exécuter.
Il y a beaucoup de caractères alternatifs qui pourraient être utilisés ici, donc je pense qu'il serait plus intéressant de lister ceux qui POURRAIENT être valables.
@
est le début d'une étiquette, par exemple,@DATA
;(
pourrait faire partie d'une expression comme celle(X)=1
qui est autorisée pour une raison quelconque; toute lettre ou_
pourrait être un nom de variableX=1
, un appel de fonctionLOCATE 10,2
ou un mot cléWHILE 1
;'
est un commentaire et?
est l'abréviation dePRINT
.la source
INTERCAL , 12 octets
Essayez de le casser en ligne!
L'approche d'INTERCAL pour les erreurs de syntaxe est un peu spéciale. Essentiellement, une instruction non valide ne provoquera pas d'erreur à moins que le programme tente de l'exécuter. En fait, la syntaxe idiomatique des commentaires consiste à les commencer
PLEASE NOTE
, ce qui ne fait que démarrer une instruction, déclare qu'elle ne doit pas être exécutée, puis la commence par la lettreE
. Si votre code estDODO
au milieu de celui-ci, vous pouvez ajouterDOABSTAINFROM(1)(1)
une déclaration valide à la fin et y insérer une instruction valide. Tout ira bien. SiDODODO
vous pouvez simplement contourner l'exécution comme elle le permet(1)DON'TDODODOCOMEFROM(1)
. Même si INTERCAL n’a pas de syntaxe littérale pour les échapper, il n’ya aucun moyen d’utiliser des erreurs de syntaxe pour créer une chaîne illégale, même en utilisant tous les numéros de ligne possibles.(1)DO(2)DO...(65535)DODODO
, puisqu'il semble qu'il est tout à fait possible d'avoir des numéros de ligne en double pourCOME FROM
travailler avec n'importe lequel d'entre eux.Pour une chaîne illégale, nous avons vraiment besoin d'utiliser une déclaration parfaitement valide:
TRY AGAIN
. Même s’il n’est pas exécuté, il doit obligatoirement être la dernière instruction d’un programme, si elle est dans le programme. À ma connaissance, 12 octets est la plus courte qu'une chaîne illégale puisse utiliserTRY AGAIN
, car elle doit garantir qu'il y a une instruction après (exécutée ou non), de sorte qu'il neDOTRYAGAIN
s'agit que de code normal et qu'elle doit s'assurer que l'intégralité de l'instruction est en effetTRY AGAIN
, doncTRYAGAINDO
ne fonctionne pas car il peut facilement être transformé en une erreur de syntaxe normale ignorée:,DON'TRYAGAINDOGIVEUP
ouPLEASE DO NOT TRY TO USE TRYAGAINDO NOT THAT IT WOULD WORK
. Peu importe ce que vous mettez de chaque côtéDOTRYAGAINDO
, vous l' erreur, soitICL993I I GAVE UP LONG AGO
,ICL079I PROGRAMMER IS INSUFFICIENTLY POLITE
ouICL099I PROGRAMMER IS OVERLY POLITE
.la source
ICL993I I GAVE UP LONG AGO
.COME FROM
modifiez également le libellé de ligne, il peut être un peu difficile de détourner le flux de contrôle autour du bloc, mais rien ne vous en empêche justeGIVING UP
!AWK , 4 octets
Essayez-le en ligne!
N'ayant
AWK
pas de méthode pour faire des commentaires sur plusieurs lignes, il faut 2 nouvelles lignes avant et 1 après/
pour éviter les commentaires ou la transformation en regex, par exemple add1/
. Le message le plus courant est `Nouvelle ligne ou fin de chaîne inattendue.Avec fissure précédente
la source
Fortran, 14 octets
Pas de commentaires multilignes ni de directives de préprocesseur dans Fortran.
la source
JavaScript (Node.js) ,
9 à8 octetsEssayez-le en ligne!
Je pense que cela devrait être assez illégal.
Tentatives précédentes du JS dans d'autres réponses
Explication
Cela est en soi illégal et bloque également toutes les guillemets simples et doubles, car ces guillemets ne peuvent pas s'étendre sur plusieurs lignes sans un point
\
final.et
Bloque les commentaires en introduisant des séquences d'échappement illégales
Bloque les backtick initiaux en introduisant un littéral RegExp non terminé
Bloque les littéraux de modèles étiquetés en introduisant un opérateur attendu entre deux backticks
la source
Rockstar ,
4 à5 octets4 barrés sont encore 4 :(
Rockstar est une langue très ... verbeuse.
Alors que
"
peut être utilisé pour définir une chaîne, telle quePut "Hello" into myVar
, à ma connaissance, il n’est pas possible que 3 guillemets apparaissent en dehors d’un commentaire, et le paren proche garantit que cela ne se produira pas non plus (les commentaires dans Rockstar sont entre parenthèses, comme cette).Rockstar a également une syntaxe littérale poétique, dans laquelle la ponctuation est ignorée. La nouvelle ligne garantit ainsi que les 3 guillemets sont le début d'une ligne de code, qui doit toujours être invalide.
la source
(()""")
, ne serait-ce pas un non-op?""")
été analysé comme un code invalideGoethe says )"""
est valide .)
et"""
Powershell,
1081214131416 octets-2 octets merci à Mazzy de trouver un meilleur moyen de le casser
+4 -1 octets grâce à IsItGreyOrGray
J'espère que ça marche.
'
et"
pour se protéger des guillemets,#>
pour casser le commentaire de bloc, de nouvelles lignes pour arrêter le commentaire d'une seule ligne, les deux'@
et"@
pour intercepter un autre style de chaîne, puis démarre un tableau incorrect pour générer une erreur de syntaxe.La logique étant qu'ils ne peuvent pas utiliser n'importe quel ensemble de guillemets pour entrer, ils ne peuvent pas bloquer le commentaire. Si
@"
est utilisé, il va créer une chaîne ici qui ne peut pas avoir de jeton par la suite, et s'ils laissez-le tranquille, il va essayer de faire un tableau cassé. Cette déclaration veut vivre si fort que je continue à trouver encore plus de trous dans l'armure.la source
@=
Enchantements runiques, 3 octets
Une des nombreuses variantes possibles.
Essayez-le en ligne!
Runic utilise des caractères de combinaison unicode dans un "
M
modifie le comportement deC
" (oùC
est une commande). En tant que tel, deux modificateurs ne sont pas autorisés à modifier la même commande et l'analyseur émettra une erreur si une telle occurrence est trouvée.De même, certaines commandes redirigeant l'IP ne peuvent être modifiées d'aucune façon, en raison de l'existence de caractères modificateurs de modification de la direction (et les deux dans la même cellule n'ont aucun sens).
Il n'y a aucun moyen d'échapper ou de littéraliser la chaîne pour la rendre valide. Le lien Tio contient un
;
afin de contourner l’erreur "pas de terminateur" de priorité supérieure.la source
TI-Basic (83 + / 84 + / SE, 24500 octets)
(24500 fois)
TI (-83 + / 84 + / SE) -Basic vérifie la syntaxe uniquement sur les instructions qu'il atteint. Même les 5000
End
instructions d'une ligne peuvent être ignorées avec aReturn
. Cela, en revanche, ne peut pas entrer dans la RAM d'une TI-83 + / 84 + / SE, aucun programme ne peut donc contenir cette chaîne. Être un peu conservateur avec le nombre de caractères ici.La TI-83 d’origine dispose de 27 000 octets de RAM; vous aurez donc besoin de 27 500
A
s dans ce cas.TI-Basic (89 / Ti / 92 + / V200, 3 octets)
Newline, citation, nouvelle ligne. La nouvelle ligne ferme tous les commentaires (et interdit l'incorporation du caractère illégal dans une chaîne, car les constantes de chaîne multiligne AFAIK ne sont pas autorisées), l'autre nouvelle ligne interdit la fermeture de la chaîne et la citation génère une erreur de syntaxe.
Vous pouvez obtenir jusqu'à 2 octets avec
sans la nouvelle ligne, mais je ne suis pas sûr que cela compte, car elle
±
est valide uniquement dans les constantes de chaîne.la source
Go , 6 octets
Essayez de le casser en ligne!
L'accent grave (`) marque un littéral de chaîne brute, dans lequel tous les caractères sauf`, y compris les retours à la ligne et les barres obliques inverses, sont interprétés littéralement comme faisant partie de la chaîne. Le noyau est constitué de trois `` dans une ligne: les littéraux de chaîne adjacents ne sont pas valides et `ferme toujours une chaîne` , il n'y a donc aucun moyen de les comprendre. Je devais utiliser 3 octets supplémentaires pour éviter le contournement, une nouvelle ligne afin que nous ne puissions pas être insérés dans un commentaire d'une seule ligne ou une chaîne entre guillemets normaux, et un * / afin que nous ne puissions pas être insérés dans un commentaire de plusieurs lignes.
la source
SILOS , 4 octets
Les silos sont compétitifs \ o /
SILOS fonctionne sur un interpréteur / compilateur à deux passes. Avant l'exécution, un "compilateur" tente de simplifier la source dans un tableau décrivant la source. Chaque ligne est traitée séparément. x + a est un opérateur d'assignation qui ajoute ea à la valeur de x et la stocke dans x. Cependant le "compilateur" va casser. Par conséquent, nous prenons cette chaîne et ajoutons une nouvelle ligne avant et après avoir vérifié qu'elle se trouve sur sa propre ligne et rompt le compilateur.
Essayez-le en ligne!
la source
ax+
erreur sur?AutoHotkey , 5 octets
`est le personnage d'échappement. Vous ne pouvez échapper à un "que lorsque vous l'assignez à une variable.
\ n * / l'empêche d'être mis en commentaire ou assigné à une variable.
la source
JavaScript, 11 caractères
Les backticks s'assurent de supprimer les chaînes de template, les guillemets se débarrassent des chaînes, la newline évite les lignes commentées, la fin du commentaire évite les commentaires de bloc chaîne.
Essayez-le en ligne!
la source
)
après le\u
, peut-être que cela fonctionnerait ici?