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 1irá para o estado ON inicial (50% para 2e 50% para 3):
//
//
L ====
\\
\\
2e -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 ========
3e -3é a que distância a luz se espalha:
0%:
L ====
50%:
//
//
L ====
\\
\\
100%:
|| //
||//
L ====
||\\
|| \\
(OBSERVAÇÃO: quando 2e 3ambos 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
2e3, e o padrão4). Por exemplo:12-1-341apenas imprimirá o estado ON inicial mencionado acima. (DICA: você pode ignorar tudo antes da final1da 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.
1pressionada, os parâmetros são redefinidos?
134?