Vamos fazer um exercício juntos, sim? Basta seguir os movimentos do stickman. Que stickman você pergunta? O que estamos prestes a criar!
Crie um programa que permita uma entrada de seqüência de caracteres contendo apenas números inteiros e produza as nove figuras seguintes com um intervalo entre elas:
@ \@/ |@_ _@| @/ \@ |@| \@\ /@/
/|\ | | | | | | | |
/ \ / \ / \ / \ /|\ /|\ / \ / \ / \
1 2 3 4 5 6 7 8 9
Isso resultará em uma animação, que podemos seguir ao longo da irl.
Aqui está um exemplo da saída criada quando a entrada é " 123245762
":
Algumas regras:
- Isso é marcado como code-golf , então o código mais curto em bytes ganha
- A entrada é
string
apenas uma contendo[1-9]
com um comprimento potencialmente variando de 2 a 100 caracteres ** - A animação deve ser um loop sem fim
- O intervalo de tempo deve ser 750 ms
- Nenhum número inteiro adjacente duplicado é permitido na entrada - isso também inclui o primeiro e o último número inteiro da entrada (consulte o sétimo e o oito casos de teste) **
** A decisão de como ela falha no caso de entrada inválida é totalmente sua, mas deve ficar claro que ela falhará . Poderia lançar uma exceção; simplesmente retorne no início; reinicie o seu PC; exclua seu próprio código-fonte / compilação; invadir as forças armadas e disparar um foguete para a localização GPS de compilação. Sua chamada. EDIT: Não é permitido exibir simplesmente uma animação (correta / metade) como entrada com falha. Deve ficar claro que há algo errado com a entrada para os casos de teste com falha abaixo. Agradeço a @ user81655 por trazer isso à minha atenção, daí a edição.
Sub-regras:
- Poste o gif em um dos casos de teste (sem falha) abaixo em sua resposta, o que você pode facilitar com o seguinte programa: screentogif.codeplex.com (é claro que qualquer outro programa de criação de gif também é permitido).
- Pontos de bônus se você realmente fizer o exercício juntamente com a animação irl quando ela terminar. ;)
Casos de teste corretos:
123245762
65
121234346565879879132418791576
Casos de teste com falha:
2
// Muito poucos caracteres7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878
// Demasiados caracteres1232405762
// Contendo entrada inválida (the0
)112212
// Falha por causa do11
e22
presente1232457621
// Falha devido ao início e à liderança1
Respostas:
Pitão, 114 bytes
Experimente aqui
(Sem pausa, não infinito)
fonte
0
.) Independentemente disso, obrigado pela entrada. Definitivamente, um dos trechos de código mais ilegíveis para esta entrada é o meu palpite. :)SpecBAS - 387 bytes
Mantém o loop até você pressionar ESC. A falta de exercício adequado (entrada incorreta - neste exemplo, 0 como uma das etapas) leva à gordura. O GIF faz um loop, no programa ele pára naquele momento.
#13
é o equivalente ao SpecBAS\n
e permite incluir o avanço de linha nas strings.fonte
JavaScript (ES6), 165 bytes
fonte
JavaScript (ES6), 210 bytes
fonte
0
e duplicatas?How it fails in case of invalid input is completely up to you
. Eu apenas ligo com entrada inválida exibindo uma animação. : P Nenhuma das outras respostas existentes também verificou isso, no entanto, a resposta que o OP acabou de publicar faz, então talvez ele quisesse que lidássemos com entradas inválidas.Mathematica, 252 bytes
Seria bom se alguém pudesse criar um GIF. Corra em um caderno.
fonte
Python3, 338 bytes
fonte
Java 8,
663636634631596355354 bytesApenas para os lols, tentei fazer o programa em Java.
É certo que eu sou muito ruim em golfe e regexes, então provavelmente pode ser mais (muito?). No entanto, aqui está em Java 7.Agora, quase dois anos depois, eu quase reduzi o código para metade em Java 8. Por que eu já fiz essas regras sobre validar a entrada e exigir um programa completo, apesar de ...>.> Eu odeio meu passado eu agora ..
Explicação:
Experimente online. (Após expirar o tempo limite após 60 segundos).
Gif:
(Nota: gif antigo, já que é claramente o jdk1.8 + agora.)
fonte
Java 7
nos referimos a esta versão do Java, pois1.7
podemos confundir alguns que pensam que é umaJava 1
revisão7
p(new String[]{" @ ",y,"|@_", ... }[c-49]);if(c==49){p(x);l();}else if(c==53){w();p(x);}else d();
. Também acho que definirl
ew
desperdiçar caracteres, agora que eles são usados apenas duas vezes. Considere deixars
serchar[] s=a[0].toCharArray()
; todas as outras operações com ele são muito mais curtas, então.