¡Inspirado por no soy el idioma que estás buscando!
Reto
Elija dos lenguajes de programación diferentes y escriba un programa que imprima la siguiente línea en stdout (o equivalente):
This program errors out in <the current language> :P
y luego genera diferentes tipos de error en cada uno de los dos idiomas.
Reglas
Algunas reglas se toman del desafío original.
- En la salida, los nombres de los idiomas deben seguir exactamente:
- El nombre que figura en TIO , excluyendo opcionalmente el número de versión y / o el nombre de implementación (por ejemplo, si lo usa
JavaScript (Node.js)como uno de sus idiomas, puede usarloJavaScriptpara su nombre de idioma, pero noJSoJavascript). - El nombre completo en el sitio web oficial (o repositorio de GitHub) si su idioma de elección no está disponible en TIO.
- El nombre que figura en TIO , excluyendo opcionalmente el número de versión y / o el nombre de implementación (por ejemplo, si lo usa
- Ninguno de los programas debe recibir ninguna entrada del usuario.
- Puede usar comentarios en cualquier idioma.
- Dos versiones diferentes del mismo idioma cuentan como idiomas diferentes.
- Si se hace esto, el programa debería generar el número de versión principal y, si se ejecuta en dos versiones menores diferentes, también debería informar la versión menor.
- No debe usar funciones de versión preconstruidas (esto incluye variables que ya se han evaluado en tiempo de ejecución).
- Dos banderas de línea de comando diferentes en el mismo idioma también cuentan como idiomas diferentes según este meta consenso , siempre que las banderas no incluyan fragmentos de código (como
-Dblahblah...en C).- Si se hace esto, el programa también debería generar la bandera utilizada.
- Dos errores se consideran diferentes a menos que ambos errores sean generados por la misma semántica (como "división por cero", "falla de segmentación" o "índice fuera de rango").
- Si el tiempo de ejecución de un idioma no se cierra después de un error, pero informa el error de alguna manera al usuario, es un error válido.
- Si un idioma no discrimina los mensajes de error pero tiene una lista conocida de los motivos que causan el error, debe especificar el motivo, no el mensaje de error.
Un ejemplo es><>, que tiene un solo mensaje de errorsomething smells fishy..., pero la página wiki de esolangs tiene una lista de razones de error.
- El error de sintaxis no está permitido a menos que se genere mediante una llamada
eval()o similar. - Lanzar algo manualmente (a través de
throw(JS),raise(Python),die(Perl) o similar) está permitido, pero todos se consideran un tipo de error. - También se permite el error por comando no válido en 2D o golflangs (y se trata como un tipo de error).
Ejemplos
Python y Ruby
- Python:
This program errors out in Python :Pa stdout, luego identificador indefinido - Ruby:
This program errors out in Ruby :Ppara stdout, luego indexar fuera de límites
C89 y C99
- C89:
This program errors out in C 89 :Pa stdout, luego división por cero - C99:
This program errors out in C 99 :Pa stdout, luego falla de segmentación
Tenga en cuenta que el número de versión siempre debe estar separado del nombre del idioma por un espacio.
Python 2.7.9 y Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :Pa stdout, luego error de sintaxis en eval - Python 2.7.10:
This program errors out in Python 2.7.10 :Pa stdout, luego error clave en dict
Perl y Perl -n
- Perl:
This program errors out in Perl :Pa stdout, luego formato de hora no válido - Perl
-n:This program errors out in Perl -n :Ppara stdout, luego intente abrir un archivo que no existe
Condición ganadora
Este es el código de golf , por lo que gana el código más corto en bytes. Pero siempre se le anima a publicar una respuesta que sea divertida o interesante, incluso si no es muy corta.

This program errors out in ...contener tabulaciones / espacios mixtos en lugar de solo espacios?Respuestas:
Python 2 / Python 3 , 60 bytes
NameError: name 'a' is not definedunsupported operand type(s) for *: 'NoneType' and 'int'Python 2:
/es división entera, 3/2 tiene 1; int (3/2 * 2) es 2.print((...)*1), aquí*1significa repetir la cadena una vez.Python 3:
(print(...))*1.printvuelveNone; La multiplicación no funcionaNone x int, por lo que informa "operando no compatible".fuente
C y C ++,
114101 bytes-13 bytes gracias a l4m2 !
Falla de segmentación en C ++, excepción de coma flotante en C.
autoestá predeterminadointen C, entonces se(int).5convierte0, por lo que tratar de dividirlo es básicamente división entre cero.En C ++
1/des 2, agregarlo a la direcciónde intentar cambiar el valor de esa dirección arroja un defecto.¡Pruébalo en C ++!
Pruébalo en C!
fuente
"++"+n, dondenestá0para C ++ y2para Cd?"++":""9 caracteres,"++"+4*d8 caracteres. Pero obtiene C / C ++ al revés. Suspiro.int main(){auto d=.5;printf("This program errors out in C%s :P",d?"++":"");2[&d]+=1/d;}(105) aunque no sé por quéintse puede omitirL"⬫"+!dlugar ded?"++":""JavaScript + HTML / HTML + JavaScript, 160 bytes
No estoy seguro si esto cuenta dos idiomas, pero es divertido.
fuente
<!-- ... -->marcadores de comentarios de una sola línea (sé que esto está en la especificación por razones de compatibilidad con versiones anteriores)Java 8 y C99, 172 bytes
Basado en mi respuesta para el desafío 'abc' y 'cba' .
Pruébelo en Java 8, lo que resulta en ArrayIndexOutOfBoundsException: 1 .
Pruébelo en C, lo que da como resultado una excepción de punto flotante: la división por cero no está definida .
Explicación:
Como puede ver en el código resaltado de Java anterior, la primera línea es un comentario debido
//, y el código C es un comentario debido/* ... */, lo que resulta en:Por lo tanto, se imprime en STDOUT y luego intenta acceder al segundo argumento de programa (cuando no se proporciona ninguno), por lo que produce la excepción ArrayIndexOutOfBoundsException .
No estoy seguro de cómo habilitar correctamente el resaltado en C, porque
lang-cda como resultado el mismo resaltado que Java ... Pero//\comentará la siguiente línea, que es el código Java, lo que resulta en:Entonces se reduce a STDOUT, y luego da una división por cero error.
fuente
//añadió a C con C99.C99.a[1]lugar dea[0]?1desde el principio. Podría haber usado0,9etc., así. Si tengo algo que editar sobre esta publicación, también lo cambiaré al0mismo tiempo.Java 8 y espacios en blanco ,
439431428408 bytesPruébelo en Java 8, lo que da como resultado ArrayIndexOutOfBoundsException: 0 .
Pruébelo en espacios en blanco: se produce un error del usuario (No se puede hacer Infix Plus) .
Explicación:
Java 8:
Por lo tanto, imprime en STDOUT y luego intenta acceder al primer argumento de programa (cuando no se proporciona ninguno), por lo que produce la excepción ArrayIndexOutOfBoundsException .
Espacio en blanco:
Se agregaron letras
S(espacio),T(tabulación) yN(nueva línea) solo como resaltado.[..._some_action]agregado solo como explicación.Prueba esta versión resaltada.
El espacio en blanco es un lenguaje basado en la pila que ignora todo excepto los espacios, las pestañas y las nuevas líneas. Aquí está el mismo programa en pseudocódigo:
Se producirá un error tan pronto como termine de imprimir todos los valores y la pila esté vacía cuando intente hacer Add (
TSSS), que requiere dos elementos en la pila.He generado la constante
111con este programa Java , que también he usado para desafíos anteriores relacionados con ASCII que hice en Whitespace. Además, he usado algunas copias de los espacios para guardar bytes.Una cosa importante a tener en cuenta es el truco que he usado para colocar el programa Java dentro de la respuesta de espacios en blanco. Permítanme comenzar explicando cómo se empuja un número en el espacio en blanco:
Sal principio: Habilite la manipulación de pila;S: Presione lo que sigue como Número;SoT: Positivo o Negativo respectivamente;Algunos
Sy / oT, seguido de unN: Número como binario, dondeT=1yS=0.Aquí algunos ejemplos:
SSSTN;SSTTN;SSSTTSTTTTN.SSSSN,SSTSN,SSSN,SSTN,SSSSSSSSSSSSN, etc. (Cuando se utilizaSSSN(oSSTN), no tenemos que especificar la parte binaria, porque es implícitamente 0 después de haber manifestado su signo.)Tan solo
SSSNes suficiente para empujar el valor0(utilizado para la letraoen este caso). Pero, para colocar el programa Java en este programa de espacios en blanco golfizado, necesitaba un espacio adicional, por lo queose presionan los primeros dos sSSSN, pero se presiona el terceroSSSSN, por lo que tenemos suficientes espacios para la oración del programa Java.fuente
CBM BASIC y código de máquina 6502 (C64),
142144 bytesTuve que agregar 2 bytes después de darse cuenta de que un error de sintaxis no estaba permitido ...
Hexdump de
.prgarchivo:La vista BÁSICA CBM , como se muestra en el editor del C64:
Atención : es imposible ingresar correctamente este programa en el editor BASIC. Ni siquiera intentes editar este programa en el editor BASIC, se bloqueará. Aún así, es un programa BASIC ejecutable;)
La vista de código de máquina 6502 :
Demostración en línea , escriba
runpara ejecutar como BASIC,sys 2049para ejecutar como código de máquina,listpara mostrarlo interpretado como código BASIC.Ejecutar como BASIC produce
division by zero error in 1uncan't continue errorExplicación:
Los primeros dos bytes de un
.prgarchivo son la dirección de carga en little endian, aquí es$0801(decimal2049), que es la dirección de inicio de los programas BASIC en el C64.runinicia este programa en el intérprete BASIC, mientras quesys 2049es el comando para ejecutar un programa de código de máquina en la dirección2049.Como puede ver, la primera línea en la vista BÁSICA es un comentario (
rem) que contiene "basura" y parte de la cadena de salida requerida. Este es el programa de código de máquina y algunos bytes de relleno. Verá algunos comandos BASIC "aleatorios" porque los programas CBM-BASIC contienen los comandos "tokenizados" como valores de un solo byte, y algunos de estos valores son los mismos que los códigos de operación utilizados en el código de máquina. El código de máquina reutiliza la cadena presente en la segunda línea de código para su salida.Los primeros dos bytes de una línea de un programa básico son un puntero a la siguiente línea, aquí
$0850. Esto se elige cuidadosamente porque50 08también es una instrucción de bifurcación 6502 que salta sobre los siguientes 8 bytes cuando no se establece el indicador de desbordamiento; esto se usa para saltar en algún lugar en el medio de esta línea de "comentario" cuando se ejecuta como código de máquina. El50es el código de operación utilizado aquí, por lo que la segunda línea tiene que comenzar0850para que el truco funcione. Es por eso que ve una secuencia de 520bytes (caracteres de espacio) para completar. El código de máquina salta activamente a la rutina de manejo de errores de ROM para dar un error de "no puede continuar".El código BÁSICO es bastante sencillo; Como segundo argumento para "imprimir",
0se dividen dos variables no inicializadas (que tienen un valor de en CBM BASIC), lo que provoca el error "división por cero".fuente
> <> y Foo , 42 bytes
Pruébalo en> <>!
Pruébalo en Foo!
Foo imprime todo
", como está bien documentado, e intenta dividir por cero al final. Ignora el'><>'.><>empuja el "Foo" a la pila, pero inmediatamente lo saca usandop. Después de que imprime todo en la pila#o<, sale cuando la pila está vacía con el único mensaje de error que conoce,something smells fishy...fuente
><>tiene una lista de razones de error, por lo que creo que debe especificar una de ellas, nosomething smells fishy....ppara explotarFooes muy inteligente!C y Python,
126116bytes-10 bytes gracias a @Bubbler!
En Python print () es un None, por lo que tratar de obtener su negativo no tiene sentido, por lo que Python arroja un error.
En C printf () devuelve un int, entonces dividirlo por cero da una excepción de coma flotante.
Pruébalo en C!
¡Pruébalo en Python!
fuente
-print(...)para elevar unTypeErroren Python, y luego puede hacer un error de coma flotante (división por cero) en C. Combinado con algunas líneas nuevas redundantes, aquí hay 116 bytes ( Python , C ).Attache + Wolfram Language (Mathematica) , 82 bytes
¡Prueba Attache en línea! ¡Prueba Mathematica en línea!
Esto gira sobre el significado del operador
=en los dos idiomas. En Attache, compara la igualdad, pero en Mathematica, realiza la asignación de variables.:=realiza asignaciones variables en ambos idiomas.Ahora, en Attache,
Printdevuelve una matriz de cadenas impresas, y la sustracción no es posible con cadenas y enteros (es decir,0). Entonces, se produce un error de tipo. En Mathematica,PrintretornosNull, y Mathematica está muy bien restando0de eso. Pero, tiramos manualmente ese nulo conThrow, dando unnocatcherror.fuente
Python (2) y QB64 , 82 bytes
Para probar la versión de Python, ¡puede probarla en línea! Para probar la versión QB64, deberá descargar QB64.
Lo que ve Python
La primera línea es solo la expresión desnuda
1(un no-op) seguida de un comentario.La segunda línea se establece
sen la cadena"QB64", pero la tercera línea la cambia inmediatamente a"Python". La cuarta línea imprime el mensaje en consecuencia.La quinta línea es otra expresión desnuda, pero plantea un
NameErrorpor el nombre indefinidoCLS.Lo que ve QB64
La primera línea, numerada
1#, define cada variable cuyo nombre comienza conS(sin distinción entre mayúsculas y minúsculas) como una variable de cadena. Esto significa que no tenemos que usars$, lo que sería un error de sintaxis en Python.La segunda línea se establece
sen la cadena"QB64".'comienza un comentario en QB64, por lo que la tercera línea no hace nada. La cuarta línea imprime el mensaje en consecuencia.La quinta línea intenta
CLS(borrar la pantalla) con un argumento de-1. Pero ya queCLSsólo acepta los argumentos de0,1o2, lo que produce el errorIllegal function call. El error crea un cuadro de diálogo que le pregunta al usuario si desea continuar con la ejecución o abortar. Técnicamente, esto significa que el error no es fatal (en este caso, puede elegir "continuar ejecución" y el programa simplemente termina sin más problemas); pero el OP ha permitido explícitamente idiomas que pueden continuar después de un error, por lo que el comportamiento de QB64 debería estar bien.fuente
Perl 5 y JavaScript (Node.js) , 96 bytes
Esto hace uso del hecho de que
(...)es una lista en Perl queprintfusará el elemento más a la izquierda y el hecho de que es el operador de coma en JavaScript, que devolverá el argumento más a la derecha.Provoca un error de división por cero en Perl y un Error de referencia porque
$no está definido en JavaScript.Prueba el Perl en línea!
¡Prueba el JavaScript en línea!
fuente
Octava y MATLAB, 67 bytes
Pruébalo en línea!
Notas: El código asume que MATLAB está instalado sin cajas de herramientas (o que los nombres de cualquier caja de herramientas instalada no comienzan con las letras A a M).
Cómo funciona:
El código obtiene los datos de la versión para el intérprete y las cajas de herramientas que utilizan
ver. Runningv(1).Nameextrae el nombre del primer producto, esto devolveráOctaveoMATLABsuponiendo que la nota anterior sea cierta.El programa mostrará la cadena requerida, completa con
OctaveoMATLABsegún sea necesario.Finalmente lo hacemos
v(--pi).En Octave,
--es el operador de pre-decremento. Como tal, intenta pre-decrementar lo que falla ya que la variablepino existe (enpirealidad es función, no una variable).En MATLAB, el operador de decremento previo no existe. Como tal, la declaración se interpreta como
v(-(-pi))que es igual a justov(pi). Sin embargo,pino es un número entero, por lo que no se puede usar para indexar en lavmatriz, dando un error.fuente
C ++ 14 (gcc) / C ++ 17 (gcc) ,
107105bytesPruébalo en línea! (C ++ 14)
Pruébalo en línea! (C ++ 17)
Supone que
<cstdio>declaraprintfen el espacio de nombres global (además destd) y que el conjunto de caracteres de ejecución básica usa valores ASCII, que son ciertos usando g ++ en Linux.El problema básico aquí es que C ++ 17 eliminó los trigrafos del lenguaje.
En C ++ 14,
"??/0"contiene un trigrafo y es equivalente a"\0". Entonces*"??/0"es cero, ycse establece en cero. El número 4 se pasa como argumento aprintf, luego la división porccausa un comportamiento indefinido. En Linux, esto sucede antes de que*pentre en escena y el programa obtiene unSIGFPE.En C ++ 17,
"??/0"es exactamente la longitud de 4 cadenas que parece ser. Así*"??/0"es'?'o 63, ycse establece en 3. El número 7 se pasa como argumento aprintf, y esta vez la división porces válida. Dado quepes un miembro del espacio de nombres, se inicializa a cero al inicio del programa y tiene un valor de puntero nulo, por lo que*pes un comportamiento indefinido. En Linux, debido a que el programa intenta modificar la memoria en la dirección cero, el programa obtiene unSIGSEGV.fuente
mainSe puede omitir el tipo de retorno, por lo que -3 bytes.Perl 5 y Perl 6 , 55 bytes
¡Prueba Perl 5 en línea! (División ilegal por cero)
¡Prueba Perl 6 en línea! (No existe tal método)
El prefijo
~es stringificación en Perl 6 y esencialmente un no-op en el programa anterior. En Perl 5, no es bit a bit, convirtiendo -1 a 0..es la sintaxis de llamada al método en Perl 6 y la concatenación en Perl 5.fuente
C (gcc) / Stax , 109 bytes
Pruébalo en línea! (C (gcc))
Pruébalo en línea! (Stax) o Ejecutar y depurarlo! (Stax)
Segfault en C. Operación no válida en Stax. Me encanta cómo todo lo que no es un comentario se usa realmente en Stax.
do
Así es como C lo ve. La primera línea es no-op. La segunda línea imprime el mensaje con
printfy luego segfaults debido a=0.Stax
El programa Stax termina cada vez que intenta saltar o echar un vistazo desde la pila vacía. Esto lo hace un poco complicado y tenemos que preparar una pila que no esté vacía.
AA=~1;hace esto sin dejar de ser una declaración válida en C.Lo que es realmente útil es
~que prepara una pila de entrada no vacía para que;se pueda ejecutar sin salir del programa. Sin embargo, los dos1s en la pila principal también se usan más tarde.La segunda línea comienza con una pestaña y comienza un comentario de línea en Stax.
La operación no válida está intentando realizar una
/operación para una cadena como TOS (segundo operando) y el número1de (*) como primer operando, que no es válido.Si se intercambian los dos operandos, sería una operación válida en Stax.
fuente
Jelly and M , 39 bytes
Pruébalo en gelatina!
Pruébalo en M!
Ambas lenguas se aplican inversa
İa0la que da lugarinfa la jalea yzoode M. no sé quézoorepresenta el infinito en M. Pregunta Dennis.La diferencia importante es que el infinito de Jelly es igual a sí mismo, mientras que el infinito de M no lo es. Así, la mónada "es igual a sí misma"
=`rinde1en Jelly y0en M. A partir de aquí:El error de Jelly es
EOFError: EOF when reading a line.El error de M es
TypeError: '>' not supported between instances of 'str' and 'int'.fuente
Foo / CJam ,
5150 bytesEsto sale con un error de división por cero en Foo, y a
NumberFormatExceptionen CJam.A CJam:
/intenta dividir la cadenaThis program errors out inen la subcadenaFoo. Dado que la cadena no contiene la subcadena, esto produce una matriz singleton que contiene la cadena original, que se muestra exactamente de la misma manera.'xes un carácter literal parax, que se imprime de la misma manera que una cadena de un carácter. De esta manera, podemos enviar datos para CJam que Foo ignora (no he descubierto cómo hacer que un bucle no se ejecute en Foo).Liintenta convertir la cadena vacía en un entero, que falla. Todo de la pila está impreso.Para Foo:
/intenta dividir la celda actual por el elemento de la pila superior (que es un implícito0). Por alguna razón, los errores de división por 0 no son fatales en Foo, por lo que esto solo imprime el mensaje STDERR y sigue adelante.'C'J'a'myLi) se ignoran.fuente
Only Jon Skeet can divide by zero.producirse unPython y Lua ,
111110102989585 bytesErrores: Python 3:
Lua
Claramente distinto.
Abusa de múltiples diferencias:
<var>=<a>,<b>,...crea una tupla en Python, pero en Lua crea una lista de argumentos, de la que solo se toma el primer miembro.#comienza un comentario en Python, pero es el operador de longitud en Lua. Accesorios adicionales para Python para permitir que las tuplas terminen en una coma.[[...]]es la sintaxis de cadena multilínea de Lua, lo que significa que ni siquiera ve la función de impresión de Python; esto es necesario debido a que Lua usa la..concatenación de cadenas y no+.a, una variable indefinida; Lua despuész=#print(x.."Lua :P"). Usar solo#print(x.."Lua :P")para Lua no funciona, ya que genera un error incluso antes de que se ejecute el código.Ediciones:
"".joinen Python, -1 bytexuna cadena en ambos idiomas y colóquelaPythonen una cadena literal en la función de impresión, -8 bytes#[[]]es más corto que#""y--[[]], -4 bytes#1como clave de tabla, -3 bytesprint(x.."Lua :P")obras, aparentemente; -1 bytefuente
Java y C #
242235Abusar de diferentes manejos de escape entre Java y C # (los escapes Unicode se analizan antes del análisis de código en Java y no en C #) como una especie de preprocesador, ese es el trabajo del
\u0027magia, el resto son algunos "comentarios de alternancia"Editar: Golfed 8 bytes gracias a un puntero de @KevinCruijssen
Editar: regla derp fija
fuente
Stringenvar(Java 10 lo admite). (O 5 cambiandoString s="...";aString s="...",x;y retirarStringdelante dex=en Java 9 o antes).AutoHotKey / C #,
155133128122 bytesEl resaltado de sintaxis lo explica mejor de lo que podría:
C # RuntimeBinderException: 'No se puede invocar un tipo no delegado'
Error de AutoHotkey : se produjo una excepción.
Ediciones:
fuente
i+=i[-1]. System.IndexOutOfRangeException: 'El índice estaba fuera de los límites de la matriz'.dynamiclugar devary lanzar Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'No se puede invocar un tipo no delegado' coni().PHP 7+ / JavaScript,
9089 bytesUtiliza 2 idiomas con una sintaxis muy similar, lo que permite escribir este código en ambos idiomas.
La separación del lenguaje se realiza mediante una propiedad no presente en JavaScript: PHP considera
[](matriz vacía) un valor falso mientras es verdadero en JavaScript (porque es un objeto y los objetos son siempre verdaderos, inclusonew Boolean(false)).Ejecución:
Se centrará en el siguiente fragmento de código:
([]?console.log($X,'JavaScript'):printf($X,PHP))();.La atribución de cadena funciona igual en ambos idiomas.
Este código utiliza el "operador ternario" ( Javascript , PHP ), que funciona principalmente de la misma manera en ambos idiomas.
Javascript
Javascript ejecutará la
console.log($X,'JavaScript')pieza, que vuelveundefined.Más adelante, cuando intentas ejecutar
(...)(), obtienes unUncaught TypeError: (intermediate value)(intermediate value)(intermediate value) is not a function(en Google Chrome).PHP
PHP ejecutará la
printf($X,PHP)pieza.En PHP, la
printffunción devuelve la longitud de la salida .PHP tiene una funcionalidad interesante: puede ejecutar funciones cuyo nombre se almacena en una variable (o, desde PHP7, como resultado de una expresión), lo que evita un error de sintaxis.
Entonces PHP intentará ejecutar la función cuyo nombre es el resultado de la expresión
[]? ... :printf($X,PHP)(que es el número33).Pero esa funcionalidad interesante tiene una advertencia: solo acepta cadenas (¡duh!).
Esto causa un
Fatal error: Function name must be a string, porque33es unint.¡Gracias a Shieru Asakoto por salvarme 1 byte!
fuente
[]es más corto'0'y también se evalúa de manera diferente en JS y PHP, ¿entonces quizás un byte -1 aquí?[]tiene que ser utilizado en lugar de'0','\0','\0'=="0", y usado que[]antes también. Pero gracias por detectar esta pregunta.Perl 5 y C, 95 bytes
//;es básicamente un NOP en perl, y es un comentario en C.Entonces el programa C es efectivamente:
Que imprime la cadena requerida, luego intenta ejecutarse
puts(32). Este es un comportamiento técnicamente indefinido en C, pero causa una falla de segmentación en TIO y en todos los sistemas a los que tengo acceso.El programa perl trata todo el programa C como una cadena, usa la expresión regular
/T.*n /para que coincidaThis program errors out iny luego imprime eso yperl :P.diehace que el programa se bloquee con el errorDied at script_name line 2.Si no le gusta eso como un error,
1/0tiene la misma longitud y se bloquea con unIllegal division by zeroerror. Simplemente me gustadiemás;)Pruébalo en línea! (DO)
Pruébalo en línea! (Perl)
fuente
VBScript, JScript, 72 bytes
VBScript imprimirá "Error de tiempo de ejecución de Microsoft VBScript: No coincide el tipo: 'y'"
JScript imprimirá "Error de tiempo de ejecución de Microsoft JScript: 'y' no está definido"
fuente
JavaScript y Python 3,
10591 bytesErrores por
NameError: name 'console' is not defineden Python 3Pruébalo en línea!
... y
TypeError: console.log(...) is not a functionen JavaScript.Pruébalo en línea!
fuente
Java (JDK) / JavaScript (Node.js), 154 bytes
Pruébalo en línea! (Java)
Pruébalo en línea! (JavaScript)
Salida en Java:
Salida en JavaScript (a stderr):
Esto aprovecha el tipeo débil de JavaScript (
1=='1') para detectar el lenguaje, y las mismas palabras clave en Java y JavaScript (var,class), y los constructores de error similares (new Error()) para hacer el políglota.fuente
PowerShell v6 y PowerShell v2, 73 bytes
Pruébalo en línea!
Esto arrojará un error de análisis en v2 porque
-shlse introdujo en v3. v3 + podrá cambiar correctamente el valor antes de intentar dividirlo por 0, arrojando convenientemente un error de división por cero. Ambas versiones tienen el hashmap $ PSVersionTable que contiene elPSVersioncampofuente
C (gcc) en Linux / C (gcc) en Mac (160)
No probado en Mac; básicamente, John Cook señaló (en su blog ) que POSIX no define gamma; Linux usa el registro de la función gamma (log (gamma (1)) devolverá 0, lo que desencadenará una excepción de coma flotante); OSX usa la función gamma "verdadera" (que oficialmente se llama tgamma por POSIX); esto devuelve 1 que luego golpeará la declaración abortar; Traté de hacer que arrojara un error de coma flotante diferente (por ejemplo, sqrt (-1) pero me estoy olvidando de cómo hacer que arroje un error frente a solo devolver cero)
fuente
Perl, Bash (78 bytes)
Salida en Perl:
Salida en Bash:
(Tenga en cuenta que Bash está mostrando el
line 4error, a pesar de que la línea 3 no termina con un avance de línea ...)fuente
C y ECPP, 112 bytes
Hangup.Illegal instruction.fuente
C (gcc) y Haskell , 135 bytes
¡Pruébelo en línea (С)! ¡Pruébelo en línea (Haskell)!
El resultado se logra entretejiendo los comentarios, siendo la versión C esencialmente esta:
(La falla se logra escribiendo antes del comienzo de la cadena).
La versión de Haskell, por otro lado, se reduce a lo siguiente:
(El fracaso se logra tomando la cola de una lista vacía)
fuente