Introducción
Después de una larga batalla, has logrado derrotar a una esfinge en un concurso de acertijos. La Esfinge, impresionado con tu habilidad, desea darte una recompensa acorde con tu inteligencia, y evoca una tira de pergamino mágico dividido en ocho cajas, cada una con un número.
"Arruga el pergamino", dice la Esfinge, "de modo que las cajas se superpongan, y esas cajas se fusionarán mediante la suma o la multiplicación. Cuando quede una caja, su valor será tu recompensa en monedas de oro".
Tarea
Debe escribir un programa o función que tome como entrada una lista / matriz / cualquiera de los ocho números naturales, y devuelva / imprima la recompensa máxima posible que se puede obtener a través de una serie de operaciones de 'pliegue'.
Mecánica
La operación de 'pliegue' se realiza en cierto número de celdas, y con +
o *
como operador. Las primeras n celdas de la lista se pliegan y se fusionan con sus celdas de destino utilizando el operador. Las celdas que no se consuman en la operación de fusión no se modifican.
Aquí hay un ejemplo de plegado usando n = 3 celdas:
usando cualquiera de las adiciones, lo que resultaría en esto:
o multiplicación, lo que resultaría en esto:
Nota: Para simplificar, no se permite el pliegue con menos de 1 celda, al igual que el pliegue con un número de celdas mayor o igual a la longitud de la lista. Sin embargo, una lista puede ser aumentada por más de la mitad de su recuento celular.
Una lista de 8 celdas se puede doblar por 5, dando como resultado una nueva lista de longitud 5: se
[0,1,2,3,4,5,6,7]
doblaría por 5 celdas usando el +
operador [9,9,9,1,0]
.
Puntuación
Reglas de golf de código estándar: el código que produce la salida correcta y tiene el menor número de bytes gana.
Bonificación: si su código también devuelve / imprime la secuencia de operaciones de pliegue que conduce a la recompensa máxima, multiplique su puntaje por 0.8. El resultado de ejemplo podría verse así:
crease 5 +
crease 2 *
crease 2 +
crease 1 *
Ejemplos
Pruebe su código utilizando estas entradas y resultados, en forma de input - maximum reward
:
[0, 1, 2, 3, 4, 5, 6, 7] - 7560
[0, 9, 0, 3, 2, 6, 1, 5] - 1944
[0, 1, 0, 3, 0, 2, 0, 4] - 36
[6, 0, 9, 1, 9, 0, 7, 3] - 11907
[0, 5, 2, 0, 1, 3, 8, 8] - 2560