Вступ
Після тривалого бою вам вдалося перемогти Сфінкса в конкурсі загадок. Сфінкс, вражений вашою майстерністю, хоче дати вам нагороду, пропорційну вашій кмітливості, і створює на світ смужку магічного пергаменту, розділену на вісім ящиків, кожна з яких містить цифру.
"Створіть пергамент, - каже Сфінкс, - таким чином, що коробки перекриваються, і ці скриньки будуть зливатися або шляхом додавання, або множення. Коли одна скринька залишиться, її значення буде вашою винагородою в золотих монетах".
Завдання
Ви повинні написати програму або функцію, яка приймає як вхід список / масив / незалежно від восьми натуральних чисел, і повертає / друкує максимально можливу нагороду, яку можна отримати за допомогою серії операцій "збільшення".
Механіка
Операція 'crease' виконується на деякій кількості комірок, +
або *
з оператором, або як. Перші n комірок списку складені поперек та об'єднані з осередками призначення за допомогою оператора. Будь-які комірки, які не споживаються в процесі злиття, залишаються незмінними.
Ось приклад згортання з використанням n = 3 комірок:
використовуючи будь-яке додавання, що призведе до цього:
або множення, що призведе до цього:
Примітка. Для простоти зміщення з меншою кількістю клітинок заборонено, як і зміщення з кількістю клітинок, більшим або рівним довжині списку. Однак список можна збільшити на більш ніж половину його кількості комірок.
Список з 8 комірок можна скласти на 5, в результаті чого новий список довжиною 5:
[0,1,2,3,4,5,6,7]
складений на 5 комірок за допомогою +
оператора [9,9,9,1,0]
.
Оцінка балів
Стандартні правила гольф-коду - код, який дає правильний вихід і має найменшу кількість виграних байтів.
Бонус: Якщо ваш код також повертає / друкує послідовність операцій складання, що призводить до максимальної винагороди, помножте свій рахунок на 0,8. Приклад виводу може виглядати так:
crease 5 +
crease 2 *
crease 2 +
crease 1 *
Приклади
Перевірте свій код, використовуючи ці входи та результати у вигляді 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