introduzione
Dopo una lunga battaglia, sei riuscito a sconfiggere una Sfinge in una gara di enigmi. La Sfinge, colpita dalla tua abilità, desidera darti una ricompensa commisurata alla tua intelligenza e evoca in realtà una striscia di pergamena magica divisa in otto scatole, ognuna contenente un numero.
"Piega la pergamena", dice la Sfinge, "in modo tale che le scatole si sovrappongano, e quelle scatole si uniranno per addizione o moltiplicazione. Quando una casella rimane, il suo valore sarà la tua ricompensa in monete d'oro."
Compito
È necessario scrivere un programma o una funzione che accetta come input un elenco / matrice / qualunque degli otto numeri naturali e restituisce / stampa la massima ricompensa possibile ottenibile attraverso una serie di operazioni di "piega".
Meccanica
L'operazione 'piega' viene eseguita su un numero di celle e con +
o *
come operatore. Le prime n celle dell'elenco vengono ripiegate e unite con le loro celle di destinazione utilizzando l'operatore. Tutte le celle che non vengono utilizzate nell'operazione di unione vengono lasciate non modificate.
Ecco un esempio di cordonatura utilizzando n = 3 celle:
usando entrambe le aggiunte, ciò comporterebbe questo:
o moltiplicazione, che si tradurrebbe in questo:
Nota: per semplicità, la cordonatura con meno di 1 cella non è consentita, così come la cordonatura con un numero di celle maggiore o uguale alla lunghezza dell'elenco. Tuttavia, un elenco può essere creato da oltre la metà del numero di celle.
Un elenco di 8 celle può essere creato per 5, risultando in un nuovo elenco di lunghezza 5:
[0,1,2,3,4,5,6,7]
creato da 5 celle usando l' +
operatore darebbe [9,9,9,1,0]
.
punteggio
Regole del golf del codice standard: il codice che produce l'output corretto e ha il minor numero di byte vince.
Bonus: se il tuo codice restituisce / stampa anche la sequenza delle operazioni di piega che porta alla ricompensa massima, moltiplica il tuo punteggio per 0,8. L'output di esempio potrebbe apparire come:
crease 5 +
crease 2 *
crease 2 +
crease 1 *
Esempi
Metti alla prova il tuo codice utilizzando questi input e risultati, sotto forma di 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