Dans cette question, je parlerai des programmes comme des chaînes, ce sont des chaînes d'octets, pas des caractères. La façon dont votre programme résultant est rendu ou affiché n'est pas importante pour ce défi, seule la façon dont il apparaît dans la mémoire compte.
Un programme vierge est un programme qui, lorsqu'il est exécuté, ne génère pas d'erreur, mais il provoquera une erreur chaque fois qu'une sous-chaîne continue de taille n , où 1 ≤ n < | S | , est retiré.
Un programme sale est l'opposé, c'est un programme qui, lorsqu'il est exécuté, fait une erreur, mais chaque fois qu'une sous-chaîne continue de taille n , où 1 ≤ n < | S | , est supprimé, il ne fait pas d'erreur.
Pour ce défi, une erreur est une sortie non vide vers STDERR.
Votre défi est d'écrire un programme sale qui utilise autant d'octets uniques que possible. Cela signifie que vous obtiendrez un point pour chaque octet unique qui apparaît dans votre code, un score plus élevé étant meilleur. Le score maximum est donc de 256.
la source
Réponses:
Unaire , 14 octets
Cela code le programme brainfuck
[
, qui génère des erreurs en raison de parenthèses inégalées.Suppression d' octets entraînera
>
,<
,+
,-
,.
,,
ou le programme vide, qui sont des programmes de brainfuck valides.la source
R , 3 octets
Essayez-le en ligne!
Le nom d'un objet est un programme valide en R.
qrt
n'est pas le nom de quoi que ce soit, il renvoie donc une erreur.q
est la fonction de sortieqr
est la fonction de décomposition QRrt
est la fonction d'échantillonnage de distribution tqt
est la distribution t CDF inverset
est la fonction de transpositionla source
0-9cqtCDFIT
, tout programme doit donc commencercm
,qf
,qr
,qt
,ts
ouIm
. La longueur trois possibilités sontqrf
,qrm
,qrt
,qts
ettsd
et un seul d' entre eux est sale (les autres ne peuvent pas être étendues soit pour les rendre sales car il n'y a pas de fonctionsrm*
,rf*
,ts*
,sd*
)Gelée ,
4 5 6 7 8 1011 octetsEssayez-le en ligne!
Vérifiez-le.
Tente d'ajouter une chaîne avec un entier.
Certains des sous-programmes possibles:
“a”
est un littéral de chaîne.“a
est le même littéral de chaîne.“
est la chaîne vide.“a”;
concatène "a" avec lui-même.... trop pour les énumérer tous.
la source
Polyglotte, 3 octets
Travaille dans:
En JavaScript, lance SyntaxError: jeton inattendu: littéral numérique ou une erreur similaire.
Toutes les autres chaînes sont des littéraux numériques valides ( 1 , 2 ou 12 ).
Dans GHCi cela jette
C'est parce qu'il essaie de s'appliquer
1
à2
une fonction, mais il ne peut pas. Lorsqu'une partie est supprimée, elle devient simplement un littéral numérique.la source
Python 2 , 2 octets
Caractère inattendu après le caractère de continuation de ligne
\
suivi par l'un de123456789 #
Try it online!
Nombre octal invalide
0
suivi par l'un de89
Try it online!
Retrait inattendu
ou
\t
suivi par l'un des123456789\
Essayez-le en ligne!
la source
Python 2/3 , 3 octets
OU
Essayez-le en ligne!
En python, "\ f" est identique à "\ x0c" et est un caractère de flux de formulaire . Cela signifie qu'il indique à une imprimante de passer à la ligne suivante.
Si une expression python commence ou se termine par
\f
, elle est fondamentalement ignorée, de même\f2
qu'une expression valide.Le
4
et2
peut être n'importe quel nombre 0-9. Cependant, pour que le premier octet soit0
valide uniquement dans Python 2.7.15, comme cela a02
été fait une déclaration légale de2
.Ainsi, l'expression elle-même échoue avec une erreur de syntaxe, car il y a deux nombres séparés par un espace. Cependant, tout raccourcissement place
\f
au début ou à la fin, là où cela n'a pas d'importance, ou crée42
ce qui est valide.(Il convient de noter que dans IDLE, ce fichier s'ouvre et ressemble à "42".)
Source d'explication du flux de formulaires: /programming//a/26184126
la source
\f
. Voici un lien d'essayer en ligne à partir duquel vous pouvez obtenir une réponse pré-formatée.Dyalog APL , 5 octets ( SBCS )
Essayez-le en ligne! ou tester tous les programmes possibles
Il y a certainement de meilleures réponses ennuyeuses, mais c'est la meilleure non ennuyeuse que j'ai trouvée
SBCS est requis car Dyalog Classic semble toujours avoir une sortie dans STDERR, ce qui le rend inutilisable.
la source