Kod Nugatları
O var öyle varsayımsal durum Cuma akşamı ve favori hobi katılmaya zamanki golf arkadaşları üzerinde davet ediyorum: Kod golf. Bununla birlikte, bu beyninizi boşaltan bir görev olduğu için, grup için biraz beyin yemi almanız gerekir, böylece kodunuzdan mümkün olduğunca golf oynayabilirsiniz.
Şimdi, herkesin en sevdiği atıştırmalık tavuk nugget'ları, ancak bir sorun var: Herkesin ihtiyaçlarını karşılayan tek bir paket yok. Bu nedenle, zaten golf havasında olduğunuz için, herkesin Nugget ihtiyaçlarını karşılamak için tam olarak hangi paketleri satın almanız gerektiğini anlayan bir program oluşturmaya karar verdiniz.
Tavuk nugget paket boyutları her yerdedir ve dünyanın neresinde yaşadığınıza bağlı olarak standart boyutlar da değişir. Ancak, en yakın [külçe servisi yapan yer] aşağıdaki boyutlarda külçe paketlerini stoklar:
4, 6, 9, 10, 20, 40
Artık belirli külçe kombinasyonlarını sipariş edemeyeceğinizi fark edebilirsiniz. Örneğin, tam olarak 11
eşit bir kombinasyon olmadığından , külçeler mümkün değildir 11
. Ancak, 43
1 paket 20
, 1 paket 10
, 1 paket 9
ve 1 paket elde ederek 4
,
20 + 10 + 9 + 4 = 43 (597)
burada 597
her bir terim birbirine kare ve ilave edilir (ipucu: en iyi çözüm en yüksek değer olarak bulunmaktadır) . Tabii ki yapmanın başka yolları da var 43
, ama bildiğiniz gibi, paket başına daha fazla külçe, külçe başına daha ucuz oluyor. Bu nedenle, maliyetinizi en aza indirmek için en az sayıda paketi ve en büyük miktarlarda ideal olarak satın almak istersiniz.
Görev
Her bir kişinin gereksinimlerine karşılık gelen tamsayıların listesini alan bir program veya işlev oluşturmalısınız . Daha sonra tavuk külçelerini satın almak için en uygun maliyetli α siparişini hesaplamalı ve yazdırmalısınız . En uygun maliyetli α sırası, her bir miktarın karelerinin toplamının en yüksek olduğu kombinasyondur. Mükemmel Nuggets satın almak için hiçbir yolu yoksa, sen gerekir yazdırmak gibi bir falsy değer , , veya kendi dilinizde durumuna göre.0
False
Impossible!
Örnek G / Ç:
[2 7 12 4 15 3] => [20 10 9 4]
1, 1, 2, 1 => False
6 5 5 5 5 5 9 => 40
[6, 4, 9] => 9 10
1 => 0
199 => 40, 40, 40, 40, 20, 10, 9
2 => Impossible!
İşte ilk 400 için ideal çözümlerin listesi. Bunların sizin nasıl olmasını beklediğimi biçimlendirilmemiş, her tuple
biri formda (N lots of M)
.
kurallar
- Standart boşluklar yok.
FrobeniusSolve
Mathematica gibi, görevin tamamını veya çoğunu yerine getiren yerleşik işlevler kullanılmaz .
α - Bunu bir örnekle açıklığa kavuşturmak için, 43 yaparak da yapabilirsiniz 4 + 6 + 6 + 9 + 9 + 9 = 43 (319)
, ancak kareler toplamı girişte belirttiğim kombinasyondan daha az olduğu için bu uygun olmaz ve dolayısıyla yanlış bir çıktı olmaz. Esasen, daha yüksek kareler = daha düşük maliyet = en düşük maliyetli.