Per provare a incoraggiare più vendite di libri diversi di una popolare serie di 5 libri, una libreria ha deciso di offrire sconti sull'acquisto di più copie.
Una copia di uno qualsiasi dei cinque libri costa $8.
Se però acquisti due libri diversi, ottieni uno sconto del 5% su quei due libri.
Se acquisti 3 libri diversi, ottieni uno sconto del 10%.
Se acquisti 4 libri diversi, ottieni uno sconto del 20%.
Se li acquisti tutti e 5, ottieni uno sconto del 25%.
Nota che se acquisti quattro libri, di cui 3 sono titoli diversi, ottieni uno sconto del 10% sui 3 che fanno parte di un gruppo, ma il quarto libro costa comunque $8.
La tua missione è scrivere il codice per calcolare il prezzo di qualsiasi cesto della spesa immaginabile (contenente solo libri della stessa serie), applicando lo sconto più grande possibile.
Per esempio, quanto costa questo cesto di libri?
Un modo di raggruppare questi 8 libri è:
Questo darebbe un totale di:
Il che dà come risultato:
Che equivale a $51.60.
Tuttavia, un modo diverso di raggruppare questi 8 libri è:
Questo darebbe un totale di:
Il che dà come risultato:
Che equivale a $51.20.
E $51.20 è il prezzo con lo sconto più grande.
La specifica del problema vieta di rappresentare i prezzi come numeri in virgola mobile: il prezzo effettivo per libro è quindi in centesimi (800¢) invece che in dollari ($8).
Iscriviti a Exercism per imparare e padroneggiare Crystal con 26 concetti142 esercizi e il mentoring di persone reali, tutto gratis.