fundo
Olá golfistas! Eu gostaria de aprender todas as linguagens de programação! Mas eu tenho um pouco de atenção ... e copiar todos os exemplos do Hello World fica chato ... mas eu gosto de fogo! ^ w ^
Desafio
Então aqui está o plano! Quero que todos escrevam o menor código que será compilado, impresso Goodbye Cruel World!
e travado. Ou, como um desafio adicional, imprima Hello World!
e trava comGoodbye Cruel World!
Regras
- Sua pontuação será a contagem total de caracteres usada. A resposta deve ser um programa executável inteiro.
- Seu programa deve imprimir
Goodbye Cruel World!
na saída e travar (erro inesperado).- Para obter um bônus de pontuação, você deve imprimir
Hello World!
a saída, mas a mensagem de erro também deve conterGoodbye Cruel World!
. Se você completar o desafio do bônus, poderá dividir sua pontuação por 2. (Inclua um! No final da sua pontuação, se estiver reivindicando o bônus!)
- Para obter um bônus de pontuação, você deve imprimir
- Desde que a saída padrão ainda seja impressa e o erro padrão ainda seja impresso, o pedido não importa. Contanto que nenhum deles possa impedir que o outro aconteça.
- A saída deve conter o conteúdo acima;
"
não deve aparecer na saída. - A saída deve conter a sequência especificada e nada mais.
- O relatório de falha pode conter qualquer coisa, mas para reivindicar o bônus, a seguinte expressão regular deve corresponder
/Goodbye Cruel World!/mi
(aka, contém, ignorar maiúsculas / minúsculas) - As strings
Hello World!
eGoodbye Cruel World!
não diferenciam maiúsculas de minúsculas, mas devem aparecer exatamente como acima. - Se o idioma for capaz de travar (não pode alterar seu código de saída), ele precisará travar. Caso contrário, use o "relatório de erros" padrão (ou seja,
STDERR
) para o idioma.
Posso travar o Python 3, por isso incluí um exemplo de resposta do Python 3! Agora vamos todos incendiar o mundo! ^ W ^
code-challenge
hello-world
Tezra
fonte
fonte
as a bonus twist challenge, print "Hello World!" and crash with "Goodbye Cruel World!"
?Respostas:
Gelatina , 12 bytes
Experimente online!
Explicação:
Como a divisão inteira é uma díade, implicitamente assumirá o valor atual da cadeia como ambos os argumentos - que é uma sequência. Falha porque espera números inteiros.
fonte
A base-250 encoded string
Isso é legal e assustador, você pode fazer isso. X3C, 43 bytes
Imprime a sequência e tenta usar o valor de retorno como um ponteiro para outra sequência a ser impressa, o que causa uma falha de segmentação.
Experimente online!
C, 42 bytes
Graças a @Ruslan!
Experimente online!
Apenas por diversão: C (no Linux de 64 bits), 149 bytes
Modificado a partir deste programa Hello World aqui .
Experimente online!
fonte
The answer must be a whole executable program.
main(i){i=puts("Goodbye Cruel World!")/0;}
retira um byte.i
.puts("")/0;
é uma declaração sintaticamente correta.SOGL ,
152517 bytes / 2 = 8,5!Explicação:
(Ab) usa o fato de que SOGL usa STDERR como uma saída de depuração; portanto, há muito texto junto com a linha
Se você canalizou o STDOUT do esboço Processing para um arquivo, o "Adeus mundo cruel!" estaria lá.
fonte
Hello World!
e nãoGoodbye Cruel World!
fazem distinção entre maiúsculas e minúsculas, mas devem aparecer exatamente como acima "█
.> <> , 25 bytes
Basicamente, ele adiciona a string à pilha (para trás, por último, em primeiro a sair) e depois faz o equivalente a:
Quando não há caracteres restantes na pilha (a sequência inteira foi impressa), o aparecimento da pilha gera um erro
fonte
#o<"Goodbye Cruel World!"
, que é basicamente o mesmo.sed, 32 bytes
i
insere uma linha ew
grava em um arquivo./dev/full
neste caso, porque todas as gravações retornamENOSPC
("Não resta espaço no dispositivo").No entanto, ele ainda precisa de uma única linha de entrada para funcionar.
fonte
Lua,
31, 30 bytesprimeiro imprime 'Adeus mundo cruel!' e depois falha ao tentar adicionar um valor nulo e 0.
Resultado:
Crédito para GalladeGuy por 1 byte a menos
fonte
a=-print"Goodbye Cruel World!"
Python 3 | Pontuação:
24,5!2322!Imprima "Hello World" e use o operador inválido '+' em "Goodbye Cruel World!" para o elemento de retorno NoneType. (recortado \ n \ r da versão anterior)
Experimente online!
Python 3 | Pontuação:
3430Imprimir adeus, do que executar uma operação unária + inválida no resultado da impressão (NoneType)
Experimente online!
fonte
+"Goodbye Cruel World!"
é menor em 3 bytes e gera um TypeError.print("Goodbye Cruel World!")/0
é mais curto para a segunda (3 bytes?)R,
2220! bytes(44/2)(40/2)Experimente online!
Resultado:
Economizou dois pontos graças ao digEmAll
fonte
40/2
Experimente online!AWK , 72 bytes, Pontuação 36!
Experimente online!
AWK
não gosta de tentar dividir por 0.fonte
CJam , 34 bytes, 17!
Experimente online!(Consulte o painel Debug para STDERR)
Explicação
No TIO, ele gera esta mensagem de erro:
fonte
Pré-processador C, 27 bytes
Resultado:
fonte
#Goodbye Cruel World!
APL (Dyalog) , 17,5 bytes
Sem bônus, 20 bytes
Experimente online!
Observe que o código não está entre aspas; portanto, o APL tenta executá-lo, mas
World
não está definido, causando uma falha no VALUE ERROR com a linha de código incorreta incluída na mensagem de erro.Com bônus, 35 ÷ 2 = 17,5 bytes
Experimente online!
Primeiro imprime a string necessária e depois trava como o programa acima.
Versão bônus mais sofisticada, 35 × 2 = 17,5 bytes
Experimente online!
Imprime a primeira string, depois elimina os cinco primeiros caracteres de (
5↓
), concatena (,
) para um novo prefixo e tenta executar (⍎
) isso, causando o mesmo erro acima.fonte
Bash
20.5!18,5!Eu não vou me basear na geléia, mas sou um pouco tímido do meu bash ao basear um script rápido do bash. 18,5 não é tão ruim para um idioma não-golfe. (Observe que isso deve ser um script, o bash interativo tentará interpretar
!
como uma pesquisa de histórico)Retorna com o código de erro 127 e:
Conforme solicitado, não
"
... em qualquer lugar:)
. Como sugerido,apricot boy
agora procuro o último argumento do comando anterior para salvar 4 bytes.fonte
W=\ World\!;echo Hello$W;"Goodbye Cruel$W"
Goodbye\ Cruel\ !$
, não 100%, mas com certeza a!$
"última palavra do último comando" #TeX, 19!
Para forçar o TeX a realmente produzir um arquivo dvi / pdf sem intervenção manual, compile com
-interaction=nonstopmode
.Ele imprime
Hello World!
, gera um erro de uso#
quando você não deveria e depois interrompe a compilação\bye
. No entanto, o que quer que seja depois\bye
ainda é emitido na mensagem de erro, por isso se aplica ao bônus.fonte
WinDBG (depuração do kernel local do Windows XP / Vista), 33 bytes
Aviso: Isso trava a máquina inteira, não apenas o programa.
A depuração do kernel local é permitida apenas no Windows XP e Vista (mas não ativada por padrão no Vista). A caixa de diálogo WinDBG na depuração do kernel local não menciona nenhum outro sistema operacional Windows, portanto, suponho que ele não possa ser ativado para eles. Presumivelmente, para outros sistemas operacionais Windows, você pode conectar-se a uma máquina remota para depuração do kernel, mas é a máquina remota que trava, por isso acho que essa solução não conta.
fonte
JS (ES5), 46/2 = 23 bytes!
Alertas
Hello, World!
e erros comUncaught TypeError: Cannot read property 'Goodbye Cruel World!' of undefined
fonte
PowerShell, 26 bytes
Acho que dividir por 0 é a maneira mais fácil de gerar um erro.
PowerShell, 35/2 = 17,5 bytes
por TessellatingHeckler , lança o erro da seguinte forma:
fonte
$w='World!'
(com um!
)?"Hello World!";Goodbye Cruel World!
é 17,5 bytes, lança uma exceção porque Adeus não é reconhecido como um comando, e a mensagem de exceção inclui a linha na íntegra para que coincida com o regex ..'Goodbye Cruel World!';x
pouparia dois bytes para 24Ponto de inflamação da operaçãoLinguagem de script da , 45/2 = 22,5 bytes
Ligue para:
Resultado:
fonte
Fortran (GFortran) , 58/2 = 29 bytes!
Experimente online!
fonte
Node.js, pontuação:
25,524,5!Economizou 1 ponto graças a ETHproductions
Um programa completo sintaticamente correto que trava no tempo de execução porque
console.log()
não está retornando uma função.Experimente online!
fonte
25.5
...: ((Gamma(26.5)
, como na definição do Mathematica.X
(e talvez até a nova linha)?Aceto , pontuação: 21,5!
Imprime
Hello World!
e depois trava comfonte
Pitão,
2824 bytesImprime uma string e tenta obter o primeiro elemento da lista vazia.
Tente isso!
fonte
AHK, 50/2 = 25! (não concorrente)
Não concorrente porque um requisito adicional tornou a resposta inválida. Não consigo encontrar uma maneira de compilar, produzir o texto e travar. Tudo o que eu tento falha em pelo menos um desses requisitos.
Esta é a solução mais chata que eu poderia pensar. Na verdade, ele não falha, mas isso não é tecnicamente um requisito. Tudo o que precisa fazer é enviar uma mensagem para a janela de depuração. Faz isso porque eu digo para fazê-lo.
fonte
Japonês , 22 bytes
Experimente online!
Economizou 3 bytes graças ao obarakon e ETHproductions
fonte
Oc"<string>"
e, em seguida, substituindo a cadeia atual pela versão compactada e cercada por barras reticulares.C #, 116/2 = 58 bytes!
Versão normal para
9487 bytes:Guardado 7 bytes graças a @KevinCruijssen.
fonte
int n=0;n/=n;
é mais curto para sua primeira resposta.int n=1/0;
, mas aparentemente isso não é possível em C # (o que é realmente uma coisa boa para a linguagem, mas ruim para codegolfing). Aliás, por que o bônus não está no topo? Aquele é mais curto.Geléia , 10,5! bytes
Experimente online!
Isso explora o comportamento indefinido, usando strings Python (strings) em vez de strings Jelly (lista de strings 1-char). A conversão é feita através da redução da string Jelly por adição e do Python
+
concatena duas strings; portanto, duas strings adicionadas são concatenadas em termos de Python. Em seguida, ele usa a mônada (intervalo) apropriada para que o Pythonint
seja chamado na string, resultando em um erro que sempre conteriaGoodbye Cruel World!
.Explicação:
fonte
Ruby,
4342 bytes / 2 = 21!Economizou meio byte com a ajuda de Alexis Andersen, substituindo
"String"/0
por-"String"
. Isso "funciona" apenas com versões Ruby inferiores a 2,3, nas quais o menos unário método foi realmente adicionado à classe String!Com Ruby <2.3:
Com Ruby> = 2.3:
fonte
-
na cadeia em vez de/
ie-"Goodbye crueld World!"
Código binário x86-64 (com chamadas do sistema Linux), 43 bytes
Desmontagem:
Este programa agrupa os dados necessários (a sequência
"Goodbye Cruel World!\n"
) em seu próprio código. Ele carrega um ponteiro para essa string usando orip
endereçamento relativo e chama owrite
syscall diretamente, e não através de um wrapper glibc, para que seja totalmente independente da posição, e podemos testá-lo facilmente incorporando o código em umaconst
string e convertendo essa string em uma função ponteiro. Para travar o programa, encerro-o com umahlt
instrução que, com privilégios de anel 0, silencia o processador para sempre (ou pelo menos até a próxima interrupção), mas com privilégios de anel 3 (típicos para programas de usuário), temos muito menos dramáticoSegmentation Fault
.Programa de teste:
Resultado:
Observe que o código de 43 bytes é um programa completo, conforme especificado pelo desafio, não apenas uma função. Não depende da
main
função do programa de teste para funcionar corretamente; ainda imprimiria a string e travaria se carregado e saltado diretamente pelo carregador.fonte
push
/pop
para carregar registros. Por exemplo, as duas primeiras instruções podem serpush 1
+pop rax
, que é 1 byte mais curto. Em seguida, as próximas duas instruções podem ser substituídas pormov edi, eax
, que é 2 bytes mais curto. O mesmo truquepush
/pop
pode ser aplicado às instruções 6 e 7:push 0x15
+pop rdx
.LOLCODE , POSSO PERDER 21 BYTES
Simplesmente coloca um operador inválido na frente da string. Você pode experimentar online aqui.
fonte
Pitão , 38/2
= 19 bytes!36/2 = 18 bytes!Teste online!
Explicações
Ele imprime
Hello World!
e tenta avaliarGoodbye Cruel World!
. Falha ao fazer isso, porque essa sequência não é um código válido.O resultado é:
fonte