In Canada, il penny non viene più distribuito. I pagamenti in contanti sono arrotondati ai 5 centesimi più vicini.
Il denaro può essere risparmiato dividendo gli acquisti. Ad esempio, due articoli da $ 1,02 costano $ 2,04 che arrotondano a $ 2,05, ma quando si acquistano gli articoli in acquisti separati, ogni prezzo viene arrotondato a $ 1,00 per un totale di $ 2,00. Tuttavia, quando acquisti due articoli a $ 1,03 ciascuno, è meglio acquistarli in un unico acquisto.
Un altro modo per risparmiare denaro è usare una carta di credito quando l'arrotondamento è sfavorevole, perché i pagamenti del credito non sono arrotondati. Se desideriamo due articoli da $ 1,04, il prezzo totale sarà arrotondato a $ 2,10 indipendentemente da come dividiamo gli acquisti. Pertanto, dovremmo pagare per questi articoli con una carta di credito.
Scrivi una funzione o un programma che accetta un elenco di prezzi di articoli come numeri interi in centesimi e genera il prezzo totale più basso possibile (in centesimi) per quegli articoli che possono essere raggiunti attraverso una sequenza di acquisti, ciascuno in contanti o tramite credito.
Il codice più corto vince.
Casi test
[] : 0
[48] : 48
[92, 20] : 110
[47, 56, 45] : 145
[55, 6, 98, 69] : 225
[6, 39, 85, 84, 7] : 218
[95, 14, 28, 49, 41, 39] : 263
[92, 6, 28, 30, 39, 93, 53] : 335
[83, 33, 62, 12, 34, 29, 18, 12] : 273
[23, 46, 54, 69, 64, 73, 58, 92, 26] : 495
[19, 56, 84, 23, 20, 53, 96, 92, 91, 58] : 583
[3, 3, 19, 56, 3, 84, 3, 23, 20, 53, 96, 92, 91, 58, 3, 3] : 598
[2, 3, 4, 4, 4, 4, 4] : 19
s.reduce(:+)(normalmente non hai nemmeno bisogno di parentesi, ma nel tuo caso ...) e in lineamper ulteriori 2 caratteri.