Desafío
Escriba el programa más corto que, cuando se compila o ejecuta, produce un mensaje de error fatal más pequeño que el propio programa. El mensaje de error no puede ser generado por el programa en sí, como Python raise
. Una respuesta válida debe incluir tanto el código como el mensaje de error. La respuesta válida más corta gana.
Ningún mensaje de error no cuenta como mensaje de error.
Ejemplo (Lua)
Código (46 bytes):
[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Error (45 bytes):
[string "[..."]:1: unexpected symbol near '['
code-golf
error-message
usuario72528
fuente
fuente
__main__.CodeException: Raised an &rror.
" mi error o es esto: "Raised an &rror.
"Respuestas:
ed , 3 bytes
Nota: La mayoría de las respuestas aquí ignoran la nueva línea final impresa como parte del mensaje de error en su recuento. Pero no veo nada en la pregunta que justifique ignorarlo, y el autor comentó que debería incluirse la nueva línea . Entonces, a menos que se cambie la pregunta, la incluiré.
Código (con nueva línea final):
Error (con nueva línea final):
fuente
C (Linux moderno), 19 bytes
Hubiera hecho mi famoso segfault pero totalmente humano lo robó.
Salida (18 bytes):
fuente
main(){main();}
)?main(){main();}
no se garantiza la seg-falla.Python 2, 35 bytes
Da error:
fuente
JavaScript (Firefox), 31 bytes
Lanza este error:
Probado en la consola de Firefox 54.0.1 en Windows 7.
fuente
Python 2 ,
8779 bytes-8 bytes gracias a Zacharý y Erik the Outgolfer.
Pruébalo en línea!
Mensaje de error, 78 bytes:
Suponiendo que el código se almacena en un archivo llamado
a
.En realidad, este es un bonito y pequeño huevo de Pascua en Python. :RE
fuente
\s\sFile "<stdin>", line 1\nSyntaxError: not a chance
que está a sólo 50 bytes [\s
es un espacio y\n
es un salto de línea], para que pueda obtener un programa de 51 bytes ..Haskell, 13 bytes
Guardar como
t.hs
u otro nombre de un carácter, compilar conghc
y ejecutar. Mensaje de error (con nueva línea final):fuente
Taxi ,
3821 bytesProduce:
Pruébalo en línea!
-17 bytes gracias a Engineer Toast
Intenta cambiar a "abc", que no existe. Tendrías
[abc]
algún lugar.fuente
Switch to plan "abc".
producciónerror: no such label
. Este podría ser uno de los pocos desafíos de código de golf donde Taxi supera algunos idiomas tradicionales.> <> , 26 bytes
Pruébalo en línea!
Cada mensaje de error en Fish es
something smells fishy...
, por lo que solo mueve el puntero a la derecha las veces suficientes para ser más largo que eso e intenta duplicar la parte superior de la pila, que está vacía en ese momento.fuente
JavaScript (Firefox), 21 bytes
Error (20 bytes) :
TypeError: a is null
fuente
Sistema V shell, 25 bytes
Mensaje de error (23 bytes):
"No es una máquina de escribir" o
ENOTTY
es un código de error definido enerrno.h
los sistemas Unix. Esto se utiliza para indicar que se especificó un número ioctl no válido (control de entrada / salida) en una llamada al sistema ioctl. En mi sistema, en/usr/include/asm-generic/errno-base.h
, puedo encontrar esta línea:En la Versión 6 UNIX y anteriores, la E / S se limitaba a dispositivos terminales conectados en serie, como un teletipo (TTY). Estos por lo general se administran a través de las
gtty
ystty
llamadas al sistema. Si se intentara usar cualquiera de estas llamadas del sistema en un dispositivo no terminal,ENOTTY
se generaría.Hoy en día, naturalmente no hay necesidad de usar un teletipo. Cuando
gtty
ystty
fueron reemplazados porioctl
,ENOTTY
se mantuvo. Algunos sistemas todavía muestran este mensaje; pero la mayoría dice "ioctl inapropiado para dispositivo" en su lugar.fuente
QBasic, 11 bytes
Hay dos soluciones de 11 bytes en QBasic, una de las cuales podría desarrollarse aún más. El mensaje de error más corto que tiene QBasic es
overflow
, y puede activarse como tal:Esto arroja
overflow
porque el máximo para un entero (i%
) es32676
. No podría32677
jugar al golf sin QBasic auto-casting esto por mucho tiempo ...Otro error, a 11 bytes, sería
out of data
. QBasic tieneDATA
declaraciones que almacenan datos en el programa, a las que luego se puede acceder medianteREAD
declaraciones. Emitir másREAD
s queDATA
s provoca el error:Tenga en cuenta que la declaración se rellena con un comentario para obtener la longitud del mensaje de error. Sí, tengo un mensaje de error con un programa más corto y un programa con un mensaje de error más corto ...
fuente
C (Linux moderno), 19 bytes
Sugerí esto en el chat, pero nadie aprovechó la oportunidad. : P Crédito a la hilarante respuesta del MD XF .
Mensaje de error, 18 bytes
fuente
W_EXITCODE(0, 11) == 11
) y el código de salida 139 (W_EXITCODE(139, 9) == 139 << 8
). Los shells se configuran de forma$?
no suryectivaWIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128
, pero la mayoría de los idiomas exponen la diferencia.WIFEXITED(wstatus)
equivalente aDIVORCE(alimony)
por casualidad?Javascript (V8), 24 bytes
Error, 23 bytes:
Probado en Nodejs v6.11.0 y Google Chrome v59.0.3071.115 .
Pruébalo en línea!
Tenga en cuenta que TIO expande el mensaje de error.
fuente
TrumpScript , 30 bytes
Mensaje de error:
fuente
PowerShell ,
215189 bytesPruébalo en línea!
Entonces, PowerShell tiene ... detallados ... mensajes de error. Además, la mayoría de los mensajes de error que no son de sintaxis son Excepciones de tiempo de ejecución, lo que significa que no son fatales, lo que reduce este problema a la necesidad de encontrar un breve error de análisis.
Creo que este es uno de los más cortos, si no el más corto,@TessellatingHeckler ha demostrado que este es el error de análisis más corto, y aún pesa en188
bytes solo para el mensaje de error. Por lo tanto, básicamente necesitamos agregar suficientes1
s para alcanzar189
bytes de "código".Ejecutar esto localmente,
c:\a.ps1
por ejemplo, reducirá el recuento de bytes en un puñado, ya que es solo una ruta de archivo más corta, pero luego no está disponible en TIO.Produce error:
fuente
[]
que se parece a un error de más cortaMissing type name after '['
y dependiendo exactamente de cómo se cuente podría ser alrededor de 190 - tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQ (tomado de las cadenas de analizador de aquí que se parece a la de detectar errores, más corto para mí([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc
).Commodore 64 Basic, 15 bytes
Produce
(Tenga en cuenta dos espacios en el mensaje de error, donde el programa tiene tres)
?SYNTAX ERROR
está vinculado con?VERIFY ERROR
el tercer mensaje de error más corto que C64 Basic puede producir, y el más corto que puede ser activado de manera confiable por el código (el mensaje más cortoBREAK IN 1
requiere interacción del usuario, mientras que?LOAD ERROR
requiere una cinta defectuosa o un disquete y?VERIFY ERROR
requiere la presencia de un disquete o cinta que contiene un archivo que no coincide con el programa en la RAM).fuente
R ,
2928 bytes-1 byte gracias a JarkoDubbeldam
Lanza el error
Error: object 'a' not found
que es de 27 bytes.Pruébalo en línea!
fuente
a #abcdefghijklmnopqrstuvwxy
El error deError: object 'a' not found
es un byte más corto.Rubí (
3332 bytes)32 bytes
Lanza el error (suponiendo en un archivo llamado "a"):
31 bytes
Editar : se eliminó un byte usando en
&
lugar de<<
agradecer a Eric , quien también ideó una solución Ruby aún más corta: http://codegolf.stackexchange.com/a/135087/65905fuente
&
no lo es. ¡Ordenado! Además, buen hallazgo con el escape hexagonal. Estaba luchando por encontrar un mensaje de error fatal más corto y sin seguimiento de pila que no sea un error de sintaxis.Brainf ** k, 17 bytes, este intérprete
Brainf ** k es un lenguaje tan simple que casi todos los intérpretes tienen un mensaje de error diferente. Este se usa
Memory Error: -1
para cuando el puntero se mueve demasiado a la izquierda e intenta otra operaciónfuente
Lisp común , 20 bytes
Pruébalo en línea!
Mensaje de error
fuente
TryAPL, 11 bytes
Código (11):
Error (10):
fuente
Javascript (Firefox),
2927 byteslanza
RangeError: invalid date
que es de 24 bytes. Probado en Firefox 54.0.1 en Windows 10.fuente
ZX Spectrum Basic, 9 bytes
produce:
Explicación:
Estoy (excepcionalmente) contando la representación ASCII del programa para fines de longitud, incluido el final de línea (no es realmente importante, ya que siempre podríamos rellenar un programa más corto con espacios).
Por lo general, los mensajes de error de ZX Spectrum son más largos y más útiles que esto: la rutina ROM en 0x0008 espera un código de error después de la llamada del código de máquina a
RST 8
., Y obtiene algún byte aleatorio (determinista) de la ROM, que produce este mensaje de error sin sentidoM
.5
es el número de error,,
es agregado por la rutina de impresión de error y0:1
es la línea: posición del comando del error.fuente
Berenjena , 53 bytes
Salidas
SyntaxError: Invalid instruction (0) at character 0.
Pruébalo en línea!
fuente
Perl 5 , 5 bytes
Emite una nueva línea, para un byte.
Pruébalo en línea!
fuente
Perl 5 , 11 bytes
Como no tengo claro si mi otra respuesta obedece las reglas de desafío, aquí hay otra alternativa.
Salida de error:
Con una nueva línea final, para 6 bytes.
Pruébalo en línea!
Por alguna razón, la función interna del intérprete Perl
Perl_mess_sv
contiene:donde
CopLINE(cop)
obtiene el número de línea del contexto de código actual. Entonces, si ese número de línea se evalúa a cero, Perl omite agregar el" at <filename> line <n>"
mensaje de error habitual .fuente
die
es para que el programa salga.raise
?ArnoldC , 150 bytes
Pruébalo en línea!
El error es de 94 bytes (incluida la nueva línea final):
Conservado porque creo que esto es más divertido - spoiler: fueron esos malditos bromistas adolescentes.
ArnoldC , 280 bytes
Pseudocódigo:
Pruébalo en línea!
Genera un error "sin entrada". (Casi todos los demás errores en ArnoldC incluyen un gran trozo de repetitivo):
279 bytes (incluida la nueva línea final):
fuente
TI-Basic, 9 bytes
Mensajes de error son más cortas de 8 bytes cada uno:
ERR:DATE
,ERR:MODE
,ERR:STAT
, yERR:ZOOM
. No lo consideréERR:DATE
porque eso no funciona en modelos sin reloj interno. Además, no lo hiceERR:ZOOM
porque parecía demasiado difícil de activar.Programa (9 bytes):
Mensaje de error:
ERR:MODE
(8 bytes)Programa (9 bytes):
Mensaje de error:
ERR:STAT
(8 bytes)fuente
Rubí, 25 bytes
Ese fue un ejercicio divertido, ¡gracias! Probablemente haya una manera de obtener un mensaje de error más corto con un SegFault, pero no pude encontrar ninguno.
Mensaje de error:
24 bytes, incluida una nueva línea final.
Pruébalo en línea!
Rubí, 26 bytes
Aquí está mi respuesta anterior:
Mensaje de error:
25 bytes, incluida una nueva línea final.
fuente
C ++ (en macOS High Sierra beta), 23 caracteres
Salida: (22 caracteres)
No recuerdo si las versiones anteriores de macOS proporcionan la
Segmentation fault (core dumped)
respuesta más tradicional , pero agregar espacios al código para rellenar eso es bastante trivial.fuente