Défi
Ecrivez le programme le plus court qui, une fois compilé ou exécuté, génère un message d'erreur fatal plus petit que le programme lui-même. Le message d'erreur peut ne pas être généré par le programme lui-même, tel que celui de Python raise
. Une réponse valide doit inclure à la fois le code et le message d'erreur. La réponse valide la plus courte gagne.
Aucun message d'erreur ne compte pas comme un message d'erreur.
Exemple (Lua)
Code (46 octets):
[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Erreur (45 octets):
[string "[..."]:1: unexpected symbol near '['
code-golf
error-message
utilisateur72528
la source
la source
__main__.CodeException: Raised an &rror.
" mon erreur ou est-ce: "Raised an &rror.
"Réponses:
ed , 3 octets
Remarque: la plupart des réponses ignorent la fin de ligne imprimée dans le message d'erreur dans leur nombre. Mais je ne vois rien dans la question qui justifie de l'ignorer, et l'auteur a commenté que la nouvelle ligne devrait être incluse . Donc, à moins que la question ne soit modifiée, je vais l'inclure.
Code (avec une nouvelle ligne):
Erreur (avec fin de ligne nouvelle):
la source
C (Linux moderne), 19 octets
J'aurais fait mon fameux segfault mais totalement humain l'a volé.
Sortie (18 octets):
la source
main(){main();}
)?main(){main();}
n'est pas garanti que seg-faute.Python 2, 35 octets
Donne une erreur:
la source
JavaScript (Firefox), 31 octets
Lance cette erreur:
Testé dans la console de Firefox 54.0.1 sur Windows 7.
la source
Python 2 ,
8779 octets-8 octets grâce à Zacharý et à Erik l'Outgolfer.
Essayez-le en ligne!
Message d'erreur, 78 octets:
En supposant que le code est stocké dans un fichier nommé
a
.C'est en fait un joli petit œuf de Pâques en Python. :RÉ
la source
\s\sFile "<stdin>", line 1\nSyntaxError: not a chance
ce qui est seulement 50 octets [\s
est un espace et\n
est une nouvelle ligne], de sorte que vous pouvez obtenir un programme de 51 octets ..Haskell, 13 octets
Enregistrer sous
t.hs
ou un autre nom à un caractère, compiler avecghc
et exécuter. Message d'erreur (avec fin de ligne nouvelle):la source
Taxi ,
3821 octetsProduit:
Essayez-le en ligne!
-17 octets grâce à l'ingénieur Toast
Essaie de passer à "abc", qui n'existe pas. Vous auriez
[abc]
quelque part.la source
Switch to plan "abc".
productionerror: no such label
. Cela pourrait être l’un des rares défis du code-golf où Taxi bat certaines langues traditionnelles.> <> , 26 octets
Essayez-le en ligne!
Chaque message d'erreur dans Fish est
something smells fishy...
, de sorte que cela déplace le pointeur suffisamment de fois pour qu'il soit plus long que cela et tente de dupliquer le haut de la pile, qui est vide à ce moment-là.la source
JavaScript (Firefox), 21 octets
Erreur (20 octets) :
TypeError: a is null
la source
Shell System V, 25 octets
Message d'erreur (23 octets):
"Pas une machine à écrire" ou
ENOTTY
est un code d'erreur défini danserrno.h
les systèmes Unix. Ceci est utilisé pour indiquer qu'un numéro ioctl (contrôle d'entrée / sortie) non valide a été spécifié dans un appel système ioctl. Sur mon système, dans/usr/include/asm-generic/errno-base.h
, je peux trouver cette ligne:Dans les versions 6 et antérieures d'UNIX, les E / S étaient limitées aux terminaux connectés en série, tels qu'un télétype (TTY). Celles-ci étaient généralement gérées via les appels système
gtty
etstty
. Si l’on essayait d’utiliser l’un ou l’autre de ces appels système sur un appareil non terminal,ENOTTY
était généré.De nos jours, il n’est naturellement pas nécessaire d’utiliser un téléscripteur. Quand
gtty
etstty
ont été remplacés parioctl
, aENOTTY
été conservé. Certains systèmes affichent toujours ce message. mais la plupart disent "ioctl inapproprié pour device" à la place.la source
QBasic, 11 octets
Il y a deux solutions de 11 octets dans QBasic, l'une d'entre elles pouvant être jouée plus loin. Le message d'erreur le plus court que QBasic a est
overflow
et peut être déclenché en tant que tel:Cela jette
overflow
parce que le maximum pour un entier (i%
) est32676
. Je ne pouvais pas jouer au32677
golf sans QBasic pour lancer ceci trop longtemps ...Une autre erreur, à 11 octets, serait
out of data
. QBasic contient desDATA
instructions qui stockent des données dans le programme, auxquelles lesREAD
instructions peuvent accéder ultérieurement . L'émission de plus deREAD
s que deDATA
s provoque l'erreur:Notez que l’instruction est complétée par un commentaire pour l’obtenir à la longueur du message d’erreur. Oui, j'ai un message d'erreur avec un programme plus court et un programme avec un message d'erreur plus court ...
la source
C (Linux moderne), 19 octets
Je l'ai suggéré dans le chat, mais personne n'a pris l'opportunité. : P crédit à la réponse hilarante de MD XF .
Message d'erreur, 18 octets
la source
W_EXITCODE(0, 11) == 11
) du code de sortie 139 (W_EXITCODE(139, 9) == 139 << 8
). Les coquilles sont définies de manière$?
non surjectiveWIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128
, mais la plupart des langues exposent la différence.WIFEXITED(wstatus)
équivalent àDIVORCE(alimony)
par hasard?Javascript (V8), 24 octets
Erreur, 23 octets:
Testé sur Nodejs v6.11.0 et Google Chrome v59.0.3071.115 .
Essayez-le en ligne!
Notez que TIO développe le message d'erreur.
la source
TrumpScript , 30 octets
Message d'erreur:
la source
PowerShell ,
215189 octetsEssayez-le en ligne!
PowerShell a donc ... des messages d'erreur ... verbeux. En outre, la plupart des messages d'erreur non syntaxiques sont des exceptions d'exécution, ce qui signifie qu'elles ne sont pas fatales, ce qui réduit le problème à la nécessité de rechercher une erreur d'analyse syntaxique courte.
Je pense que c'est l'une des plus courtes, sinon la plus courte,@TessellatingHeckler a démontré qu'il s'agissait de l'erreur d'analyse la plus courte, et qu'elle pèse toujours en188
octets uniquement pour le message d'erreur. Nous avons donc besoin d'ajouter assez de1
s pour atteindre les189
octets de "code".Exécuter ceci localement,
c:\a.ps1
par exemple, réduira le nombre d'octets d'une poignée car il s'agit simplement d'un chemin de fichier plus court, mais il n'est pas disponible sur TIO.Produit une erreur:
la source
[]
ce qui ressemble à une erreur plus courteMissing type name after '['
et selon exactement comment vous comptez pourrait être environ 190 - tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQ (tiré de la chaîne d' analyse ici qui ressemble à l'erreur d'analyse la plus courte pour moi([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc
).Commodore 64 Basic, 15 octets
Produit
(Notez deux espaces dans le message d'erreur, où le programme en a trois)
?SYNTAX ERROR
est?VERIFY ERROR
le troisième message d'erreur le plus court pouvant être généré par C64 Basic, et le plus court pouvant être déclenché de manière fiable par un code (le message le plus courtBREAK IN 1
, requiert une interaction de l'utilisateur,?LOAD ERROR
requiert une bande ou une disquette défectueuse, et?VERIFY ERROR
requiert la présence de une disquette ou une bande contenant un fichier ne correspondant pas au programme en RAM).la source
R ,
2928 octets-1 octet grâce à JarkoDubbeldam
Lance l'erreur
Error: object 'a' not found
qui est 27 octets.Essayez-le en ligne!
la source
a #abcdefghijklmnopqrstuvwxy
L'erreurError: object 'a' not found
est un octet plus court.Ruby (
3332 octets)32 octets
Lance l'erreur (en supposant que dans un fichier nommé "a"):
31 octets
Edit : Rasé un octet en utilisant
&
au lieu de<<
grâce à Eric , qui a également mis au point une solution Ruby encore plus courte: http://codegolf.stackexchange.com/a/135087/65905la source
&
non. Soigné! Aussi, bonne trouvaille avec l'évasion hexagonale. Je me débattais pour trouver un message d'erreur irrécupérable plus court et sans trace de pile, autre qu'une erreur de syntaxe.Brainf ** k, 17 octets, cet interprète
Brainf ** k est un langage si simple que presque tous les interprètes ont un message d'erreur différent. Celui-ci est utilisé
Memory Error: -1
lorsque le pointeur est trop déplacé vers la gauche et que vous tentez une autre opération.la source
Common Lisp , 20 octets
Essayez-le en ligne!
Message d'erreur
la source
TryAPL, 11 octets
Code (11):
Erreur (10):
la source
Javascript (Firefox),
2927 octetsjette
RangeError: invalid date
qui est de 24 octets. Testé sur Firefox 54.0.1 sur Windows 10.la source
ZX Spectrum Basic, 9 octets
produit:
Explication:
Je compte (exceptionnellement) la représentation ASCII du programme à des fins de longueur, y compris en fin de ligne (ce n'est pas vraiment important, car nous pourrions toujours ajouter un programme plus court avec des espaces).
En règle générale, les messages d'erreur ZX Spectrum sont plus longs et plus utiles que cela - la routine ROM à 0x0008 prévoit le code d'erreur suivant le code machine appel à
RST 8
, et va chercher un certain octet aléatoire (déterministe) du ROM, qui produit ce message d'erreur absurde.M
.5
est le numéro d'erreur,,
est ajouté par la routine d'impression d'erreur et0:1
constitue la ligne: position de commande de l'erreur.la source
Aubergine , 53 octets
Les sorties
SyntaxError: Invalid instruction (0) at character 0.
Essayez-le en ligne!
la source
Perl 5 , 5 octets
Affiche une nouvelle ligne, pour un octet.
Essayez-le en ligne!
la source
Perl 5 , 11 octets
Puisque je ne sais pas si mon autre réponse obéit aux règles du défi, voici une autre alternative.
Erreur de sortie:
Avec une nouvelle ligne de fin, pour 6 octets.
Essayez-le en ligne!
Pour une raison quelconque, la fonction interne de l'interpréteur Perl
Perl_mess_sv
contient:où
CopLINE(cop)
obtient le numéro de ligne du contexte de code actuel. Donc, si ce numéro de ligne est évalué à zéro, Perl ignore l'ajout du" at <filename> line <n>"
message d'erreur habituel .la source
die
est pour que le programme se termine .raise
?ArnoldC , 150 octets
Essayez-le en ligne!
L'erreur est de 94 octets (y compris le saut de ligne final):
Conservé parce que je pense que c'est plus drôle - spoiler: c'était ces farces adolescentes dang.
ArnoldC , 280 octets
Pseudocode:
Essayez-le en ligne!
Génère une erreur "pas d'entrée". (Presque toutes les autres erreurs dans ArnoldC incluent un gros morceau de passe-partout):
279 octets (y compris les retours à la ligne):
la source
TI-Basic, 9 octets
Les messages d'erreur les plus courts sont 8 octets chacun:
ERR:DATE
,ERR:MODE
,ERR:STAT
, etERR:ZOOM
. Je n'ai pas envisagé,ERR:DATE
car cela ne fonctionne pas sur des modèles sans horloge interne. Aussi, je ne suis pas allé pourERR:ZOOM
parce que cela semblait trop difficile à déclencher.Programme (9 octets):
Message d'erreur:
ERR:MODE
(8 octets)Programme (9 octets):
Message d'erreur:
ERR:STAT
(8 octets)la source
Ruby, 25 octets
C'était un exercice amusant, merci! Il existe probablement un moyen d’obtenir un message d’erreur plus court avec un SegFault, mais je n’en ai trouvé aucun.
Message d'erreur:
24 octets, y compris une fin de ligne.
Essayez-le en ligne!
Ruby, 26 octets
Voici ma réponse précédente:
Message d'erreur:
25 octets, y compris un retour à la ligne.
la source
C ++ (sur macOS High Sierra bêta), 23 caractères
Sortie: (22 caractères)
Je ne me souviens pas si les versions précédentes de macOS fournissaient la
Segmentation fault (core dumped)
réponse plus traditionnelle , mais l'ajout d'espaces dans le code pour compléter cette opération est assez simple.la source