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é 1
y -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 1
o -1
"restablece" el valor que estamos contando, y las secuencias consecutivas de 1
o -1
significa 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Ãx
axì2
para guardar dos bytes.Cubix , 65 bytes
Pruébalo en línea!
Míralo correr
Como una breve explicación de esto:
fuente
JavaScript (ES6), 38 bytes
fuente
R , 32 bytes
Pruébalo en línea!
Este es el mismo método que algunos otros aquí.
Con la entrada de
-1 -1 1 1 -1 -1 -1
2, 2, 3
y valores-1, 1, -1
3, 3, 7
-3, 3, -7
-7
fuente
Python 3 ,
5756 bytes-1 byte gracias a @notjagan
Pruébalo en línea!
fuente
s>()
me llevó un segundo. Eso es realmente inteligente.Jalea , 4 bytes
Pruébalo en línea!
fuente
C ++ 14, 58 bytes
Toma entrada a través del
v
argumento (std::vector
o cualquier contenedor iterable), salidas als
argumento (por referencia). Cada elemento dev
debe ser1
o-1
.Ejemplo de uso y casos de prueba.
fuente
Brachylog , 13 bytes
Pruébalo en línea!
Usos de Brachylog
_
lugar de-
.Explicación:
fuente
Python,
7672 bytesPruébalo en línea!
fuente
Pyth , 12 bytes
Pruébalo en línea!
fuente
PHP, 51 bytes
Ejecutar
-n
o probarlo en línea .fuente
CJam (13 bytes)
Conjunto de pruebas en línea . Este es un bloque anónimo (función) que toma una matriz de entradas en la pila y deja un int en la pila. La última prueba muestra que maneja una matriz vacía correctamente, dando 0.
El enfoque es la codificación directa de la longitud de ejecución seguida de una decodificación de longitud de ejecución manual de cada ejecución y conversión de base. Usando el decodificador incorporado para la longitud de ejecución obtengo un byte más con
{e`1/:e~2fb1b}
o{e`{ae~2b}%1b}
.fuente
05AB1E , 6 bytes
Pruébalo en línea!
fuente
γε¬sƶÄ<o*}OO
Haskell,
5453 bytesPruébalo en línea!
Una recursión simple que dobla el acumulador
k
o lo restablece a1
/-1
y agrega los valores de cada paso.fuente
Mathematica, 60 bytes
fuente
Mathematica, 25 bytes
fuente
Java, 91 bytes
fuente
Pyth, 11 bytes
Pruébalo en línea
Cómo funciona
fuente