Meus dois filhos gostam de brincar com o seguinte brinquedo:
As áreas coloridas com as formas internas podem ser tocadas e a tartaruga ilumina a área e emite um som ou diz o nome da cor ou da forma interna. O botão do meio altera o modo. Há um modo no qual as áreas tocam notas musicais diferentes quando tocadas, com um toque: se a criança tocar três áreas consecutivas no sentido horário, uma melodia especial 1 é tocada. Se as três áreas consecutivas tocadas forem colocadas no sentido anti-horário, uma melodia especial 2 será tocada.
O desafio
Vamos simular a lógica interna do brinquedo. Dada uma sequência com três pressionamentos do garoto, retorne dois valores distintos e coerentes se os três pressionamentos forem para áreas consecutivas (sentido horário ou anti-horário) e um terceiro valor distinto, se não estiverem.
Detalhes
- As áreas de entrada serão nomeadas com um caractere cada, que pode ser sua cor:
ROYGB
para vermelho, laranja, amarelo, verde e azul; ou sua forma:HSRTC
para coração, quadrado, estrela (R
), triângulo e círculo. Caso não importa, você pode optar por trabalhar com entrada e saída apenas em maiúsculas ou minúsculas. - O programa receberá uma string (ou array de caracteres ou qualquer outra coisa equivalente) com três pressionamentos. Exemplos (usando as cores):
RBO
,GYO
,BBR
,YRG
,YGB
,ORB
... - O programa produzirá três valores coerentes e distintos para representar os três resultados possíveis: um primeiro valor se a combinação não acionar uma melodia especial, um segundo valor se a combinação acionar a melodia especial no sentido horário e um terceiro valor se a combinação acionar o melodia especial no sentido anti-horário. Exemplo:
0
para nenhuma combinação especial,1
para a melodia desencadeada por uma combinação no sentido horário e-1
para a melodia desencadeada por uma combinação no sentido anti-horário. - Você não precisa se preocupar em lidar com entradas incorretas.
Casos de teste
Input Output // Input based on colors
--------------
RBO 0 // No special combination
GYO -1 // Counterclockwise melody triggered
BBR 0 // No special combination
YRG 0 // No special combination
YGB 1 // Clockwise melody triggered
ORB -1 // Counterclockwise melody triggered
OOO 0 // No special combination
BRO 1 // Clockwise melody triggered
Este é o código-golfe , portanto, pode ganhar o código mais curto para cada idioma!
[0,0]
,[1,0]
,[0,1]
permitido como saída? Vejo a resposta do Mathematica fazendo isso e economizaria 3 bytes na resposta 05AB1E.