Giriş
Uzun bir savaştan sonra, bir Sfenks'i bir bilmeceler yarışmasında yenmeyi başardınız. Yeteneklerinizden etkilenen Sfenks, size zekanızla orantılı bir ödül vermek istiyor ve her biri rakam içeren sekiz kutuya bölünmüş büyülü bir parşömen şeridi varıyor.
"Parşömen kırışık," diyor Sfenks, "kutuların üst üste binmesi ve bu kutuların toplama veya çarpma yoluyla birleşmesi. Bir kutu kaldığında değeri altın paralarla ödülünüz olacak."
Görev
Bir liste / dizi / sekiz doğal sayıdan herhangi birini girdi olarak alan ve bir dizi 'katlama' işlemi ile elde edilebilecek maksimum ödülü döndüren / basan bir program veya işlev yazmalısınız.
mekanik
'Katlama' işlemi, bazı hücrelerde ve operatörle +
veya *
operatör olarak gerçekleştirilir. Listenin ilk n hücresi katlanır ve hedef hücrelerle operatör kullanılarak birleştirilir. Birleştirme işleminde tüketilmeyen hücreler değiştirilmeden bırakılır.
İşte n = 3 hücre kullanarak katlama örneği:
bununla sonuçlanacak her iki eklemeyi de kullanarak:
ya da bununla sonuçlanacak çarpma:
Not: Basitlik açısından, listenin uzunluğundan daha büyük veya ona eşit sayıda hücre ile kırışmaya olduğu gibi 1'den az hücre ile katlama izni verilmez. Bununla birlikte, bir liste hücre sayısının yarısından fazlasıyla kırılabilir.
8 hücreli bir liste 5 ile katlanabilir, bu da uzunluk 5'in yeni bir listesiyle sonuçlanır:
operatörün kullanacağı [0,1,2,3,4,5,6,7]
5 hücre tarafından katlanır .+
[9,9,9,1,0]
puanlama
Standart kod golf kuralları - doğru çıktı üreten ve en az bayt sayısına sahip olan kod kazanır.
Bonus: Kodunuz aynı zamanda maksimum ödüle neden olan kırışıklık işlemleri sırasını da döndürür / yazdırırsa, puanınızı 0,8 ile çarpın. Örnek çıktı aşağıdaki gibi olabilir:
crease 5 +
crease 2 *
crease 2 +
crease 1 *
Örnekler
Şu girişleri ve sonuçları kullanarak kodunuzu şu şekilde test edin 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