Tente criar uma animação em tesoura de arte ASCII simples!
Desafio
Todas as entradas serão números -31 a 31.
A saída será uma animação (a ser emitida em algum lugar , desde que o quadro anterior seja substituído. GIFs são permitidos.), Separados por (aproximadamente) 1 quarto de segundo.
Se a entrada ( n
) for positiva:
- A animação deve começar com
8<
uma tesoura aberta AKA. - O próximo quadro é
8=
. Isso mostra a tesoura "cortando". - Um traço (marca de corte) é adicionado atrás da tesoura, e a animação se repete até que haja
n
traços.
Se a entrada for negativa:
- A tesoura começa aberta e voltada para a esquerda (assim:)
>8
, comn
espaços à sua frente. - A tesoura fecha e permanece voltada para a esquerda (
=8
). - A tesoura reabre, à medida que o espaço é removido e um traço é adicionado atrás da tesoura.
Se a entrada for zero:
- Saída apenas a tesoura abrindo e fechando, por 10 quadros. Eles podem estar voltados para qualquer direção, desde que seja consistente.
Isso é código-golfe , então a submissão mais curta em bytes vence. (Mesmo que a sua inscrição não ganhe claramente por causa de algum tipo de "idioma de golfe" novo, ainda gostaríamos de vê-la.)
As mensagens de erro são permitidas, desde que a própria mensagem de erro não interfira na animação.
Exemplo de pares de entrada e saída:
(Separei os quadros para maior clareza, mas deve haver aproximadamente 0,25 segundos entre cada quadro)
Input: 1
Output:
8<
8=
-8<
Input: 2
Output:
8<
8=
-8<
-8=
--8<
Input: 5
Output:
8<
8=
-8<
-8=
--8<
--8=
---8<
---8=
----8<
----8=
-----8<
Input: 0
Output:
8<
8=
8<
8=
8<
8=
8<
8=
8<
8=
Input: -2
Output:
>8
=8
>8-
=8-
>8--
Input: -3
Output:
>8
=8
>8-
=8-
>8--
=8--
>8---
Apreciar!
Respostas:
SOGL V0.12 , 53 bytes
Experimente aqui!
fonte
MATL ,
595857 bytesExperimente no MATL Online! Ou veja um exemplo executado no compilador offline:
fonte
JavaScript (ES2017) + HTML, 165 + 10 bytes
-16 bytes por @Shaggy
Experimente no trecho abaixo:
fonte
alert
ing cada "frame" pode não aderir à especificação, você pode querer obter esclarecimentos sobre isso.)alert
já que os requisitos são que os quadros cheguem a intervalos de ~ 0,25s, o quealert
não seria suportado sem mais informações do usuário.TI-BASIC, 173 bytes
Ter a entrada 0 terminada em um quadro diferente dos outros foi um obstáculo muito interessante!
Como o TI-BASIC não gosta de cordas vazias, isso mantém pelo menos um caractere fictício à esquerda da tesoura, o primeiro dos quais é constantemente um espaço; para evitar contar isso como parte dos n espaços para entradas negativas, este programa começa a imprimir a partir da coluna mais à direita da primeira linha e, em seguida, quebra o restante da string para baixo, a fim de iniciar o campo real de animação, recém primeira coluna.
Algumas notas para um dispositivo exótico: O tamanho do código TI-BASIC é medido em tokens, não em caracteres. Para comparações consistentes de calculadoras cruzadas, geralmente ignoramos a contagem de bytes que lida com os comprimentos dos cabeçalhos (por exemplo, subtraímos 8 de PROGRAM: SCISSORS). Além disso, para rotinas que se comportam totalmente na tela inicial (aquelas que não possuem estruturas de controle, na maioria das vezes), eliminamos ainda mais o tamanho de um programa vazio para "salvar" em 9 bytes também. Este programa em particular não pode ser digitado na tela inicial, para que a liberdade não seja tomada.
fonte
Oitava ,
190186 bytesExperimente online! (nota:
clc
não funciona no TIO, portanto, são apenas todos os quadros de animação produzidos sequencialmente). Obrigado por @LuisMendo por me informar sobre a funçãoe(...)
no Octave, que é igual aexp(1)*ones(...)
.Acontece que as atribuições em linha retornam apenas as entradas alteradas da matriz, não a matriz inteira. Isso significa que construções como
q(k(i+1)+=s)
não são possíveis, portanto o programa é quase como MATLAB. De fato, a entrada do MATLAB é apenas um pouco mais longa,MATLAB,
198195 bytesfonte
+ones
pelo mais feio+~e
. Além disso, no Octave e no Matlab, substitua[i i+1]
pori:i+1
.e(...)
? Acho que nunca senti a necessidade de uma matriz m-por-n dee
. Faz para um bom golfe embora.Limpo , 294 bytes
Experimente online!
Observe que isso não funciona no TIO, o link é apenas para fins de apresentação.
Seus resultados podem variar se você tiver uma
CLOCK_PER_TICK
constante diferente1000
do padrão para x86 Windows Clean.fonte
Python 2 , 170 bytes
Experimente online!
fonte
(approximately) 1 quarter of a second
; por que não usar um tempo de espera de.2
segundos e salvar um byte?Ruby, 169 bytes
Praticamente auto-explicativo quando você explora, pelo menos na minha opinião. O programa deve estar em execução em um computador com o comando / alias cls.
Experimente online! (Foi necessário substituir o método system (), apenas para esse script, devido às limitações mencionadas acima.)
Eu tentei usar
Mas acabou de imprimir um personagem invisível, alguém sabe por quê?
fonte