Entrada:
Una lista / vector no vacío donde cada elemento contiene un valor / carácter, que indica si contará hacia arriba o hacia abajo . Usaré 1y -1, pero puedes elegir lo que quieras. Solo puede usar dos valores, no puede usar 1,2,3...y -1,-2,-3..., para arriba y abajo respectivamente.
Desafío:
Vamos a usar los números de la serie geométrica 1, 2, 4, 8, 16, 32 ... . Cada vez que comience a contar hacia arriba o hacia abajo, contará en incrementos de 1 , luego 2 , luego 4 y así sucesivamente. Si cambia y comienza a contar de otra manera, restará 1 , luego 2 , luego 4 y así sucesivamente. La salida será el número al que llegue al final.
Ejemplos:
En el ejemplo a continuación, la primera línea es la entrada, la segunda línea son los números que está contando hacia arriba / hacia abajo, la tercera línea es la suma acumulativa y la última línea es la salida.
Ejemplo 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
Ejemplo 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 puede ver, el primero 1o -1"restablece" el valor que estamos contando, y las secuencias consecutivas de 1o -1significa duplicar el valor.
Ejemplo 3
-1 -1 1 1 -1 -1 -1
-1 -2 1 2 -1 -2 -4
-1 -3 -2 0 -1 -3 -7
-7
Algunos casos de prueba adicionales para dar cuenta de algunos casos de esquina potenciales.
La entrada está en la primera línea. La salida está en el segundo.
1
1
-------
-1
-1
-------
-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
0
Este es el código de golf, por lo que gana la presentación más corta en cada idioma.
®ì2Ãxaxì2para guardar dos bytes.