Étant donné une liste de 1
s et de -1
s, déterminez s'il s'agit ou non d'un code OVSF valide (en émettant une valeur true ou falsey).
Les codes OVSF sont définis comme suit:
[1]
est un code OVSF.Si
X
est un code OVSF, alorsX ++ X
etX ++ -X
sont tous les deux des codes OVSF.Voici la
++
concaténation de liste et-
annule chaque élément de la liste.Aucune autre liste n'est un code OVSF valide.
Vous pouvez supposer que la liste d'entrée contient uniquement -1
et 1
, mais vous devez gérer correctement la liste vide, ainsi que les listes dont la longueur n'est pas une puissance de 2.
Le code le plus court (en octets) gagne.
Cas de 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