Desafio
Escreva o programa mais curto que, quando compilado ou executado, produz uma mensagem de erro fatal menor que o próprio programa. A mensagem de erro pode não ser gerada pelo próprio programa, como o do Python raise
. Uma resposta válida deve incluir o código e a mensagem de erro. A resposta válida mais curta vence.
Nenhuma mensagem de erro não conta como uma mensagem de erro.
Exemplo (Lua)
Código (46 bytes):
[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Erro (45 bytes):
[string "[..."]:1: unexpected symbol near '['
code-golf
error-message
user72528
fonte
fonte
__main__.CodeException: Raised an &rror.
" meu erro ou é este: "Raised an &rror.
"Respostas:
ed , 3 bytes
Nota: A maioria das respostas aqui está ignorando a nova linha final impressa como parte da mensagem de erro em sua contagem. Mas não vejo nada na pergunta que justifique ignorá-lo, e o autor comentou que a nova linha deveria ser incluída . Então, a menos que a pergunta seja alterada, eu vou incluí-la.
Código (com nova linha à direita):
Erro (com nova linha à direita):
fonte
C (Linux moderno), 19 bytes
Teria feito meu famoso segfault, mas totalmente humano roubou.
Saída (18 bytes):
fonte
main(){main();}
)?main(){main();}
não há garantia de falha de seg.Python 2, 35 bytes
Dá erro:
fonte
JavaScript (Firefox), 31 bytes
Lança este erro:
Testado no console do Firefox 54.0.1 no Windows 7.
fonte
Python 2 ,
8779 bytes-8 bytes graças a Zacharý e Erik, o Outgolfer.
Experimente online!
Mensagem de erro, 78 bytes:
Supondo que o código é armazenado em um arquivo chamado
a
.Este é realmente um pequeno ovo de Páscoa em Python. : D
fonte
\s\sFile "<stdin>", line 1\nSyntaxError: not a chance
que fica a apenas 50 bytes [\s
é um espaço e\n
é uma nova linha], para que possa obter um programa de 51 byte ..Haskell, 13 bytes
Salve como
t.hs
ou outro nome de um caractere, compileghc
e execute. Mensagem de erro (com nova linha à direita):fonte
Táxi ,
3821 bytesProduz:
Experimente online!
-17 bytes graças ao Engineer Toast
Tenta mudar para "abc", que não existe. Você teria em
[abc]
algum lugar.fonte
Switch to plan "abc".
produçãoerror: no such label
. Esse pode ser um dos poucos desafios do código-golfe em que o táxi supera alguns idiomas tradicionais.> <> , 26 bytes
Experimente online!
Toda mensagem de erro no Fish é
something smells fishy...
, portanto, isso apenas move o ponteiro o tempo suficiente para ser maior que isso e tenta duplicar a parte superior da pilha, que está vazia no momento.fonte
JavaScript (Firefox), 21 bytes
Erro (20 bytes) :
TypeError: a is null
fonte
Shell do sistema V, 25 bytes
Mensagem de erro (23 bytes):
"Não é uma máquina de escrever" ou
ENOTTY
é um código de erro definido emerrno.h
sistemas Unix. Isso é usado para indicar que um número ioctl (controle de entrada / saída) inválido foi especificado em uma chamada do sistema ioctl. No meu sistema, em/usr/include/asm-generic/errno-base.h
, posso encontrar esta linha:Na versão 6 UNIX e mais antiga, a E / S estava limitada a dispositivos terminais conectados em série, como um teletipo (TTY). Estes eram geralmente gerenciados através das chamadas
gtty
e dostty
sistema. Se alguém tentasse usar uma dessas chamadas do sistema em um dispositivo não terminal,ENOTTY
foi gerado.Atualmente, naturalmente, não há necessidade de usar um teletipo. Quando
gtty
estty
foram substituídos porioctl
,ENOTTY
foi mantido. Alguns sistemas ainda exibem esta mensagem; mas a maioria diz "ioctl inadequado para o dispositivo".fonte
QBasic, 11 bytes
Existem duas soluções de 11 bytes no QBasic, uma das quais pode ser jogada ainda mais. A menor mensagem de erro que o QBasic possui é
overflow
e pode ser acionada da seguinte maneira:Isso ocorre
overflow
porque o máximo para um número inteiro (i%
) é32676
. Eu não conseguia32677
jogar golfe sem o QBasic converter isso por muito tempo ...Outro erro, com 11 bytes, seria
out of data
. QBasic possuiDATA
instruções que armazenam dados no programa, que podem ser acessadas posteriormente porREAD
instruções. A emissão de maisREAD
s queDATA
s causa o erro:Observe que a instrução é preenchida com um comentário para obter o comprimento da mensagem de erro. Sim, tenho uma mensagem de erro com um programa mais curto e um programa com uma mensagem de erro mais curta ...
fonte
C (Linux moderno), 19 bytes
Sugeri isso no chat, mas ninguém aproveitou a oportunidade. : P Crédito à resposta hilária do MD XF .
Mensagem de erro, 18 bytes
fonte
W_EXITCODE(0, 11) == 11
) e o código de saída 139 (W_EXITCODE(139, 9) == 139 << 8
). Os shells são definidos de maneira$?
não-adjetivaWIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128
, mas a maioria dos idiomas expõe a diferença.WIFEXITED(wstatus)
equivalenteDIVORCE(alimony)
por acaso?Javascript (V8), 24 bytes
Erro, 23 bytes:
Testado no Nodejs v6.11.0 e Google Chrome v59.0.3071.115 .
Experimente online!
Observe que o TIO expande a mensagem de erro.
fonte
TrumpScript , 30 bytes
Mensagem de erro:
fonte
PowerShell ,
215189 bytesExperimente online!
Portanto, o PowerShell possui ... mensagens de erro ... detalhadas. Além disso, a maioria das mensagens de erro que não são de sintaxe são Exceções de Tempo de Execução, o que significa que não são fatais, o que reduz esse problema à necessidade de encontrar um pequeno erro de análise.
Acho que este é um dos mais curtos, se não o mais curto,@TessellatingHeckler demonstrou que este é o menor erro de análise e ainda pesa em188
bytes apenas para a mensagem de erro. Então, basicamente precisamos acrescentar1
s suficientes para alcançar189
bytes de "código".Executando isso localmente em
c:\a.ps1
por exemplo, reduzirá a contagem de bytes em um punhado, pois é apenas um caminho de arquivo mais curto, mas não estará disponível no TIO.Produz erro:
fonte
[]
parecer um erro mais curtoMissing type name after '['
e, dependendo de exatamente como você conta, pode estar em torno de 190 - tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQ (extraído das cadeias de caracteres do analisador aqui que parece o menor erro de analisador para mim([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc
).Commodore 64 Básico, 15 bytes
Produz
(Observe dois espaços na mensagem de erro, onde o programa possui três)
?SYNTAX ERROR
está associada?VERIFY ERROR
à terceira menor mensagem de erro que o C64 Basic pode produzir e a menor que pode ser acionada com segurança por código (a menor mensagemBREAK IN 1
, requer interação do usuário,?LOAD ERROR
requer uma fita ou disquete com defeito e?VERIFY ERROR
exige a presença de um disquete ou fita contendo um arquivo que não corresponde ao programa na RAM).fonte
R ,
2928 bytes-1 byte graças a JarkoDubbeldam
Lança o erro
Error: object 'a' not found
que é 27 bytes.Experimente online!
fonte
a #abcdefghijklmnopqrstuvwxy
O erro deError: object 'a' not found
um byte é menor.Ruby (
3332 bytes)32 bytes
Lança o erro (assumindo um arquivo chamado "a"):
31 bytes
Edit : Raspei um byte usando em
&
vez de<<
agradecer a Eric , que também veio com uma solução Ruby ainda mais curta: http://codegolf.stackexchange.com/a/135087/65905fonte
&
não é. Arrumado! Além disso, boa localização com o escape hexadecimal. Eu estava lutando para encontrar uma mensagem de erro fatal mais curta e sem rastreamento de pilha que não fosse um erro de sintaxe.Brainf ** k, 17 bytes, este intérprete
Brainf ** k é uma linguagem tão simples que quase todo intérprete tem uma mensagem de erro diferente. Este é usado
Memory Error: -1
para quando o ponteiro é movido demais para a esquerda e você tenta outra operaçãofonte
Lisp comum , 20 bytes
Experimente online!
Mensagem de erro
fonte
TryAPL, 11 bytes
Código (11):
Erro (10):
fonte
Javascript (Firefox),
2927 byteslança
RangeError: invalid date
que é de 24 bytes. Testado no Firefox 54.0.1 no Windows 10.fonte
ZX Spectrum Basic, 9 bytes
produz:
Explicação:
Estou (excepcionalmente) contando a representação ASCII do programa para fins de comprimento, incluindo o final da linha (não é realmente importante, pois sempre podemos preencher um programa mais curto com espaços).
Normalmente, as mensagens de erro do ZX Spectrum são mais longas e mais úteis que isso - a rotina da ROM em 0x0008 espera o código de erro após a chamada do código da máquina para
RST 8
. E busca algum byte aleatório (determinístico) da ROM, que produz essa mensagem de erro sem sentidoM
.5
é o número do erro,,
é adicionado pela rotina de impressão de erros e0:1
é a linha: posição de comando do erro.fonte
Beringela , 53 bytes
Saídas
SyntaxError: Invalid instruction (0) at character 0.
Experimente online!
fonte
Perl 5 , 5 bytes
Gera uma nova linha, por um byte.
Experimente online!
fonte
Perl 5 , 11 bytes
Como não estou claro se minha outra resposta obedece às regras do desafio, aqui está outra alternativa.
Saída de erro:
Com uma nova linha final, por 6 bytes.
Experimente online!
Por alguma razão, a função interna do interpretador Perl
Perl_mess_sv
contém:onde
CopLINE(cop)
obtém o número da linha do contexto de código atual. Portanto, se esse número de linha for avaliado para zero, o Perl ignorará a adição do" at <filename> line <n>"
à mensagem de erro.fonte
die
é para o programa sair.raise
?ArnoldC , 150 bytes
Experimente online!
O erro é 94 bytes (incluindo a nova linha à direita):
Preservado porque acho isso mais engraçado - spoiler: eram aqueles brincalhões adolescentes.
ArnoldC , 280 bytes
Pseudo-código:
Experimente online!
Gera um erro "sem entrada". (Quase todos os outros erros no ArnoldC incluem um grande pedaço de clichê):
279 bytes (incluindo nova linha à direita):
fonte
TI-Basic, 9 bytes
Mais curtas mensagens de erro são 8 bytes cada:
ERR:DATE
,ERR:MODE
,ERR:STAT
, eERR:ZOOM
. Eu não considereiERR:DATE
porque isso não funciona em modelos sem um relógio interno. Além disso, não fui atrásERR:ZOOM
porque parecia muito difícil de desencadear.Programa (9 bytes):
Mensagem de erro:
ERR:MODE
(8 bytes)Programa (9 bytes):
Mensagem de erro:
ERR:STAT
(8 bytes)fonte
Ruby, 25 bytes
Foi um exercício divertido, obrigado! Provavelmente existe uma maneira de obter uma mensagem de erro mais curta com um SegFault, mas não consegui encontrar nenhuma.
Mensagem de erro:
24 bytes, incluindo uma nova linha à direita.
Experimente online!
Ruby, 26 bytes
Aqui está a minha resposta anterior:
Mensagem de erro:
25 bytes, incluindo uma nova linha à direita.
fonte
C ++ (no macOS High Sierra beta), 23 caracteres
Saída: (22 caracteres)
Não me lembro se as versões anteriores do macOS fornecem a
Segmentation fault (core dumped)
resposta mais tradicional, mas adicionar espaços ao código para compensar isso é bastante trivial.fonte