Entrada:
Uma lista / vetor não vazio em que cada elemento contém um valor / caractere, indicando se você vai contar para cima ou para baixo . Vou usar 1
e -1
, mas você pode escolher o que quiser. Você pode usar apenas dois valores, não pode usar 1,2,3...
e -1,-2,-3...
, para cima e para baixo, respectivamente.
Desafio:
Você vai usar os números na série geométrica 1, 2, 4, 8, 16, 32 ... . Toda vez que você começar a contar para cima ou para baixo, contará em incrementos de 1 , depois 2 , depois 4 e assim por diante. Se você mudar e começar a contar da outra maneira, subtrairá 1 , depois 2 , depois 4 e assim por diante. A saída deve ser o número que você obtém no final.
Exemplos:
No exemplo abaixo, a primeira linha é a entrada, a segunda linha são os números que você está contando para cima / para baixo, a terceira linha é a soma acumulada e a última linha é a saída.
Exemplo 1:
1 1 1 1 1 1 1 1 1 1
1 2 4 8 16 32 64 128 256 512
1 3 7 15 31 63 127 255 511 1023
1023
Exemplo 2:
1 1 1 1 1 1 -1 -1 -1 -1 1 1 1
1 2 4 8 16 32 -1 -2 -4 -8 1 2 4
1 3 7 15 31 63 62 60 56 48 49 51 55
55
Como você pode ver, o primeiro 1
ou -1
"redefine" o valor que estamos contando e sequências consecutivas 1
ou -1
meios duplicando o valor.
Exemplo 3:
-1 -1 1 1 -1 -1 -1
-1 -2 1 2 -1 -2 -4
-1 -3 -2 0 -1 -3 -7
-7
Alguns casos de teste adicionais para explicar alguns casos de canto em potencial.
A entrada está na primeira linha. A saída está no segundo.
1
1
-------
-1
-1
-------
-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
0
Este é o código-golfe, pelo que a submissão mais curta em cada idioma vence.
®ì2Ãx
paraxì2
salvar dois bytes.