Dada uma lista de 1
s e -1
s, determine se é ou não um código OVSF válido (emitindo um valor de verdade ou falsey).
Os códigos OVSF são definidos da seguinte maneira:
[1]
é um código OVSF.Se
X
for um código OVSF, entãoX ++ X
eX ++ -X
são ambos códigos OVSF.Aqui
++
está a concatenação da lista e-
nega todos os elementos da lista.Nenhuma outra lista é um código OVSF válido.
Você pode supor que a lista de entrada contenha apenas -1
e 1
, mas deve manipular a lista vazia corretamente, bem como listas cujo comprimento não seja 2.
O código mais curto (em bytes) vence.
Casos de teste
[] -> False
[1] -> True
[-1] -> False
[1, 1] -> True
[1, -1] -> True
[1, 1, 1, 1] -> True
[1, 1, 1, 1, 1] -> False
[1, -1, -1, 1, -1, 1, 1, -1] -> True
[1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1] -> False
[1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1] -> False
[1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1] -> True