Este é o meu primeiro desafio, por isso estou mantendo-o bastante simples.
Se você já digitou telnet towel.blinkenlights.nl
sua linha de comando e pressionou enter, terá experimentado a alegria da asciimação. A asciimação é, simplesmente, fazer uma animação com arte ascii. Hoje estaremos fazendo uma estimativa muito básica de uma pessoa fazendo polichinelos.
Haverá duas imagens ascii que reuniremos em uma asciimação. Número 1:
_o_
0
/ \
Número 2:
\o/
_0_
<blank line>
Observe que o segundo tem uma linha em branco no final.
Portanto, seu programa deve executar estas etapas:
- Limpe a tela do console.
- Imprima a imagem correta da arte ascii.
- Defina uma bandeira ou algo assim para que você faça a outra imagem da próxima vez.
- Aguarde um momento (cerca de um segundo).
- Continue na 1.
Regras
- Seu programa deve ser um loop infinito (teoricamente).
- A linguagem de programação usada deve ter sido criada antes da publicação deste desafio.
- Isso é código-golfe , então o código mais curto em bytes vence.
- Aplicam-se brechas padrão.
Apreciar!
clear
) é diferente do Windows (umacls
)Respostas:
CJam,
5145423836 bytesO acima usa notação de sinal de intercalação; a sequência
^[
é realmente o caractere ASCII com o ponto de código 27.Peguei emprestada a sequência de escape (
^[c
) da resposta do @DomHastings ( com a permissão dele ) para salvar 4 bytes.Verificação
Você pode recriar o arquivo assim:
Para executar o código, baixe o interpretador CJam e execute:
Isso funcionará em qualquer terminal que suporte console_codes ou um subconjunto apropriado. 1
Como funciona
1 As tomadas de salto terão uma aparência melhor se você ocultar o cursor do terminal antes de executar o programa. No Konsole, por exemplo, você pode definir a cor do cursor para corresponder à cor do plano de fundo. Isso deve ser feito através das configurações do seu terminal, pois
^[c
redefine o terminal.fonte
Calculate the factorial of 60,000 and discard the result. This takes "about a second".
;)2Fm*
seja uma boa alternativa de um byte a menos para6e4m!
a "operação sem sentido que retorna um valor verdadeiro e leva cerca de um segundo para calcular".e!
, mas eles parecem memorizados. Após a primeira iteração, o pobre Jack sofre um ataque cardíaco ...Pitão -
414039 bytes(Estou contando os
\x1b
bytes como um byte, pois o SO destrói caracteres especiais).Claramente não funciona on-line, pois é a) um loop infinito eb) usa códigos de escape de terminal.
Fiquei surpreso ao descobrir que a atribuição aumentada funcionava com a pós-atribuição. Pyth é incrível.
fonte
.V0
como ciclo infinitoQBasic, 58 bytes
Testado em QB64 .
O idioma certo para o problema pode ser surpreendentemente competitivo, mesmo que seja geralmente detalhado. O
?
atalho paraPRINT
ajuda também, é claro.CLS
é Cl orelha s creen;RUN
sem argumentos reinicia o programa, que é a maneira mais curta de obter um loop infinito.O único outro truque aqui é imprimir
0
para o meio da primeira foto. QBasic coloca um espaço na frente de (e depois) valores numéricos não negativos quando os imprime, resultando em0
. Salvo 3 caracteres" 0"
.Também posso salientar que o atraso neste código é literalmente um segundo e não depende da máquina. ; ^ P
fonte
Perl (* nix) , 54 bytes
(
\x1b
é contado como 1 byte, mas escapou para testes mais fáceis.) O item acima foi testado com Bash e reduzido por outro byte, graças a @Dennis !Perl (Windows) , 56 bytes
Obrigado a @Jarmex por seus testes e conselhos!
fonte
print"@[2J"
:, substituindo o @ dentro das aspas pelo ASCII 27 (para fins de teste,print"\033[2J"
pode ser mais fácil).\e
por um byte ESC literal. - Você se importaria se eu usasse o\ec
truque na minha resposta?"\e"
é claro, porque é apenas um atalho para isso de qualquer maneira. Por favor, vá em frente!Javascript (ES6),
109937970 bytes + HTML,1210 bytes =1201069180 bytesBastante direto. Usa seqüências de caracteres de modelo para armazenar as imagens e alterna um valor booleano para determinar qual usar.
NOTA: Esta solução pode não ser válida, pois na verdade não usa um console. No entanto, não acredito que seja possível limpar um console do navegador usando JS, pelo menos não enquanto estiver usando o Firefox.
fonte
<pre id="a"/>
inserir a parte HTML, não precisará das<pre>
tags no código.document.getElementById`a`
pordocument.body
.<pre>
e fazendodocument.all[4]
. Isso permite que você se livre da string do wrapper e apenas faça issoinnerHTML=a?`...`:`...`}
.Bash,
8684 bytesfonte
Python 2, 99 bytes
Executa no Windows
Para máquinas UNIX, adicione dois bytes:
fonte
awk -
95 92 86 8483Bom treino: D Apenas me perguntei se isso era possível. Ainda não há preços a ganhar ...;)
Se alguém quiser testar isso: depois de executar o programa, você deve pressionar Ctrl + D (fim da entrada) para realmente iniciar o bloco END. Para finalizar, eu tenho que usar Ctrl + Z.
Eu também tenho isso, que tem apenas 74 bytes, mas começa com a pausa de um segundo, que não é o comportamento desejado, eu acho
fonte
Lote - 82 bytes
Editar: silenciou o comando timeout e removeu a nova linha extra.
Eu já vi duas outras respostas em lotes semelhantes, então eu realmente não queria postar isso, mas este é o meu primeiro golfe.
fonte
timeout 1
vai colocar um monte de saída não solicitado no console>mul
seja erro de tipo ou talvez você não saiba o quenul
é. pt.wikipedia.org/wiki/Null_deviceBBC BASIC, 75 bytes
Observe que a tokenização reduz para 75 bytes. O espaço em branco é adicionado pelo IDE.
fonte
JavaScript ES6,
10095 bytesRegistra no console. Testado no Safari Nightly
fonte
Lote,
151130118 bytesfonte
@PING 127.0.0.1 -n 2>NUL
vez disso. O padrão do ping é esperar cerca de um segundo entre as tentativas; portanto, isso é alguns milissegundos após a precisão, bastante próximo o suficiente para esse desafio. ReferênciaCBM 64 BASIC V2,
121119112117 bytesfonte
?CHR$(147)
a tela? Se assim você pode ser capaz de salvar 2 bytes agora que o OP confirmou que a linha em branco não precisa ser explicitamente impressoJulia, 70 bytes
(no Windows , substituindo
clear
porcls
, graças ao undergroundmonorail)No Linux, 72 bytes
Isso usa novas linhas reais em vez de
\n
salvar um byte; caso contrário,i
é 1 ou -1 como o "sinalizador" e usa a recursão para obter o loop infinito. Chame-o como umn(1)
ou apenasn()
.Além disso,
run(`clear`)
/run(`cls`)
usa um comando shell para limpar a janela, porque Julia não possui um comando de limpeza de janela interno.fonte
clear
paracls
(presumo, não sei nada sobre Julia).cls
funciona (veja a minha resposta)Lote do Windows, 83
89Editar removeu a linha vazia após o esclarecimento pelo OP
Se você se livrar da linha vazia no homem pulando (que não pode ser vista de qualquer maneira), a pontuação é 83Nota:
timeout
não está presente no Windows XP. Funciona no Vista ou em versões mais recentes. Além disso,timeout
não é preciso para o segundo, por isso é uma escolha perfeita para implementar a etapa 4 (aguarde um momento ( cerca de um segundo ))fonte
Javascript (ES6), 82 bytes
Uma modificação da minha resposta anterior que usa o console. Funciona parcialmente no Firefox, mas apenas limpa o console no Chrome, AFAIK.
Como sempre, sugestões são bem-vindas!
fonte
JavaScript,
929189 bytesc
é mostrado em vez de limpar o console, interrompendo a saída)Removendo
"\033c"+
do código acima, o seguinte funciona no navegador, mas não limpa o console.fonte
x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)
Por alguma razão, JS não me deixa passarconsole.log
como função e o homem ASCII como um parâmetro extra.console.log
parasetInterval
, a razão é que não estamos passando a função, mas chamá-lo. Ele seria avaliado antes desetInterval
ser chamado e, comoconsole.log
não retorna, passaria essencialmenteundefined
parasetInterval
. Faz sentido? E obrigado por reduzi-lo!x=0;setInterval(console.log,1e3,"\033c"+[
_o_ <quebra de linha> 0 <quebra de linha> / \ `,\\o/<line break>_0_
] [x ^ = 1])` De fato, ele não traz um erro se eu substituirconsole.log
poralert
."\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]
é avaliado antes da chamadasetInterval
.Ruby, 79 bytes
Requer códigos de escape.
fonte
Quarto, 86 bytes
Requer GNU Forth para as seqüências de escape. Para rodar em um não-GNU Forth, basta mudar
S\"
paraS"
, e os caracteres de escape não serão impressos corretamente.fonte
CBM BASIC v2.0 (68 caracteres)
O exposto acima requer algumas explicações, pois a marcação no Stack Exchange não representa adequadamente os caracteres PETSCII:
fonte
cera de abelha ,
119113 bytesExplicação das partes importantes do programa:
Eles
f
pressionam os valores no gstack (pilha global) para uso posterior. Esses valores são acessados pelas instruções0gh
(ou espelhadashg0
) ehg
(gh
).h
gira o gstack para cima,g
lê o valor máximo do gstack e o empurra para o lstack (pilha local) da abelha (ponteiro de instruções).Uma explicação detalhada segue a seguir, se necessário. Talvez com animação.
fonte
Peixe morto , não competidor (658 bytes)
Esta é uma solução não concorrente , pois não atende completamente aos requisitos de desafio. Deadfish é uma linguagem interpretada muito estranha, que possui apenas 4 comandos e um acumulador. O acumulador é uma variável de byte inicializada em 0. Os 4 comandos são:
i
= Incrementar o acumuladora = a + 1
d
= Decrementa o acumuladora = a - 1
s
= Esquadrar o acumuladora = a * a
o
= Saída do acumuladorprint(a)
Como o idioma não inclui repetição, limpeza da tela ou atrasos, ele não atende aos requisitos. Saída esperada:
Explicação do código:
Interpretador de peixes mortos em Python 3:
fonte
Noodel , 24 bytes não- concorrentes
Incompetente porque Noodel nasceu depois que o desafio foi criado :)
Tente:)
Como funciona
Atualmente, não existe uma versão do Noodel que suporte a sintaxe usada neste desafio. Aqui está uma versão que faz:
24 bytes
fonte