Dato un elenco di 1
s e -1
s, determinare se si tratta di una valida codice OVSF (emettendo un truthy o un valore Falsey).
I codici OVSF sono definiti come segue:
[1]
è un codice OVSF.Se
X
è un codice OVSF, alloraX ++ X
eX ++ -X
sono entrambi codici OVSF.Ecco la
++
concatenazione dell'elenco e-
annulla tutti gli elementi dell'elenco.Nessun altro elenco è un codice OVSF valido.
È possibile supporre che l'elenco di input contenga solo -1
e 1
, ma è necessario gestire correttamente l'elenco vuoto, nonché elenchi la cui lunghezza non è una potenza di 2.
Vince il codice più breve (in byte).
Casi test
[] -> 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