Atualmente, no meu trabalho, nos mudamos para um novo prédio. Deveria ser o estado da arte e ter luzes automáticas, persianas automáticas e agora é conhecido como o edifício mais ecológico da cidade.
No entanto, ele realmente não funciona tão bem. Às vezes, as persianas de enrolar se fecham em dias nublados e nasce quando o sol começa a brilhar, e as luzes às vezes causam efeitos de discoteca alternando a ativação e desativação a cada 5-10 minutos. Além disso, não temos nenhuma maneira manual de controlar essas persianas, nem a temperatura, mas temos um controle remoto para as luzes.
Esses controles remotos, no entanto, vieram sem manual de instruções e contêm pouco mais de 20 botões, fazendo todo tipo de coisa, exceto o que você parece querer.
PS: Eu escrevi esse desafio há 1,5 meses na Sandbox. Atualmente, nós meio que sabemos como os controles remotos funcionam.
Uma grande vantagem desse prédio é 30 graus Celsius fora, mas por dentro ele permanece sempre com a mesma temperatura ambiente 21.
Então essa foi a introdução e o controle remoto das luzes inspirou esse desafio.
Desafio:
Digamos que inicialmente tenhamos uma lâmpada desligada:
L
Em seguida, pressionamos todos os tipos de botões e emitimos o estado da lâmpada posteriormente.
Utilizamos os seguintes números para as diferentes funções do controle remoto da lâmpada. Quando um símbolo de menos está na frente desse número, fazemos o oposto.
1
= ON;-1
= OFF.2
= Aumenta a força em 25%;-2
= Diminuir a força (fraca) em 25%.3
= Aumentar spread em 50%;-3
= Diminuir o spread em 50%.4
= Alternando o tipo de luz.
Então, tudo isso é bastante vago, então vamos aprofundar um pouco o que cada coisa significa:
Portanto, -1
(OFF) é bastante óbvio e 1
irá para o estado ON inicial (50% para 2
e 50% para 3
):
//
//
L ====
\\
\\
2
e -2
é a distância que a luz viaja ( ==
é anexada a cada 25%):
0% (equal to a light bulb that is OFF)
L
25%
L ==
50%
L ====
75%
L ======
100%
L ========
3
e -3
é a que distância a luz se espalha:
0%:
L ====
50%:
//
//
L ====
\\
\\
100%:
|| //
||//
L ====
||\\
|| \\
(OBSERVAÇÃO: quando 2
e 3
ambos estiverem em 100%, você terá este estado:
|| //
|| //
|| //
||//
L ========
||\\
|| \\
|| \\
|| \\
4
é alternar o tipo de luz.
Default:
//
L ==
\\
After toggling (note the single space before '/' instead of two):
/
L --
\
Entrada:
Você receberá uma entrada contendo os possíveis pressionamentos de botão. Por exemplo:
12-34
Resultado:
O estado da lâmpada de luz depois que todos os botões da entrada são pressionados subseqüentemente. Portanto, com a entrada de exemplo acima, temos a seguinte saída:
L ------
Regras do desafio:
- A entrada contém apenas
1234-
(e nunca um-
antes do4
). - Você nunca pode ficar abaixo de 0% ou acima de 100%. Se um número aumentar / diminuir além desses limites, você poderá ignorá-lo.
- Quando a lâmpada está desligada, você pode ignorar qualquer ação e, quando ligada novamente, ela volta ao estado ON inicial (50% para ambos
2
e3
, e o padrão4
). Por exemplo:12-1-341
apenas imprimirá o estado ON inicial mencionado acima. (DICA: você pode ignorar tudo antes da final1
da entrada - excluindo-1
.) - Os espaços à direita iguais ao comprimento da luz ou uma única nova linha à direita são desinibidos. Adicionar novas linhas desnecessárias extras não é, no entanto.
- Você pode receber a entrada como uma lista de números inteiros, em vez de uma única sequência. Então, em vez de
12-34
, você pode ter[1,2,-3,4]
como entrada.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados, programas completos. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
12-34
L ------
12-1-341
//
//
L ====
\\
\\
14-3224333-2
|| //
|| //
||//
L ======
||\\
|| \\
|| \\
142-1-314-3-322
L --------
1324-2-3
/
/
L ----
\
\
134
| /
|/
L ----
|\
| \
1-2-2-214-3-3-3
L ----
4
). Obrigado por perguntar.
1
pressionada, os parâmetros são redefinidos?
134
?