O objetivo deste desafio é escrever um programa em que o comprimento dos três seguintes seja exatamente o mesmo:
- o comprimento do código fonte
- o comprimento da saída impressa na saída padrão
- a duração dos avisos do compilador gerados com o compilador (não modificado) de sua escolha
O vencedor é o código mais curto para atender aos três critérios e deve ter pelo menos 1 caractere.
Para apimentar as coisas, se a saída tiver menos de três caracteres diferentes, será adicionada uma penalidade de 5 pontos ao comprimento de cada um (então +10 se apenas um tipo, +5 para dois).
(As novas linhas contam com 1 ou 2 caracteres, a escolha é sua, mas deve ser consistente com todos os três critérios. Os espaços em branco à esquerda e à direita são ignorados em todas as linhas nos três critérios)
Em caso de pontuação igual, quem imprime o resultado mais interessante (em vez de lixo) é o vencedor.
Respostas:
Bash, 23 caracteres
Erro:
Fonte:
Resultado:
Brainf * ck, 32 caracteres
Este código é executado por cerca de 3 segundos e para e exibe o seguinte erro e saída.
Erro:
Fonte:
Saída: (Hexdump)
C, 35 caracteres
Atenção:
Origem e Saída:
PHP, 50 caracteres
Atenção:
Origem e Saída:
fonte
C - 48 caracteres
Nota: inclui uma nova linha final (estilo Unix).
Saída de
gcc a.c
leituras:A saída
a.out
é principalmente de caracteres não imprimíveis, então aqui está o que parece depois de passar pelo hexdump:fonte
main(i){i='\z';while(i-->74)putchar(i);}
- mas reduzir o tamanho do programa é realmente contraproducente.JavaScript, 63
66A saída é:
No Chrome, o erro é:
fonte
Visual Basic .NET, 185
Puxa,
vbc
é bem detalhado com seus avisos de compilação. De qualquer forma, o código é este:(Observe que eles devem ser tabulações, não espaços.)
A saída é esta:
E o aviso do compilador é este:
(Desta vez, são quatro espaços, não tabulações.)
fonte
Zsh , 20 bytes
O problema que enfrentamos aqui é mencionado no comentário acima: Zsh imprime o nome do programa além do número da linha antes de cada erro. A solução aqui usa um nome de arquivo de um caractere para abusar disso. Eu o envolvi em um script auxiliar para mostrar exatamente o que é impresso e usado
wc -c
no stderr, stdout e no arquivo de origem.Saída:
569Xcatcatcatcatcat
seguida por uma nova linhaErros:
s:[:2: ']' expected
seguidos por uma nova linhaEDIT: Solução alternativa de 20 bytes sem restrição de arquivo:
Experimente online!
Zsh ,
zsh -x
, 10 bytes-x
flag habilita o xtrace. Isso novamente requer um nome de arquivo com um único caractere. Experimente online!Zsh
zsh -JNTwEDY
, 12 bytes-flag
Resposta mais curta, sem necessidade de nome de arquivo. Define mais sinalizadores e$-
imprime todos eles. Experimente online!fonte
JavaScript (Firefox 54), 34 bytes
Saídas:
E envia este aviso ao console do navegador:
Parece isso na minha cópia do Firefox Developer Edition (54.0a2). Também pode funcionar em outras versões do Firefox.
fonte
Ruby, 48 caracteres
Saídas
Avisa
(o arquivo é r.rb, eu removi o caminho, se você executá-lo no irb, você receberá (irb): 1: warning ...)
Existe o método warn no Ruby, mas ele apenas envia seus argumentos para $ stderr, fazendo com que pareça menos um aviso.
fonte
Python, 57 bytes
Outros intérpretes podem exibir o aviso de maneira diferente. Isso foi testado apenas para funcionar no TIO.
Experimente online
Resultado
Atenção
Observe que os espaços à esquerda não são contados na contagem de bytes. Se os espaços à esquerda não fossem ignorados, isso poderia ser feito em 51 bytes.
fonte
Javascript (ES6),
3230 bytesimpressões
no Chrome e depois lança
Minha solução original de 32 bytes:
primeiro, imprime
E lança o erro
fonte
VBA, 39 bytes
Não tenho certeza se isso se qualifica, dada a restrição do compilador, mas:
Entrada: (na janela imediata)
* A saída inclui caracteres não imprimíveis que não são exibidos bem nesta janela.
fonte
Perl 6 , 10 bytes
Experimente online!
Imprime
1000000000
em STDOUT eBool::True
em STDERR. Ambos produzem uma nova linha final, mas os espaços em branco finais são ignorados nesse desafio.dd
é uma função de depuração específica do Rakudofonte