introduction
Vous avez un ami qui ne cesse de vous demander des prêts et vous en avez assez. Aujourd'hui, il est revenu pour un prêt. Au lieu de refuser son offre, vous avez une bonne idée: troll votre ami en lui donnant autant de pièces / billets que possible.
Défi
Vous prendrez comme entrée: le montant d'argent que votre ami veut un prêt et le montant de pièces / billets que vous avez. Pour ce défi, les dénominations possibles sont de 20,00 $, 10,00 $, 5,00 $, 2,00 $, 1,00 $, 0,25 $, 0,10 $, 0,05 $ et 0,01 $. Un exemple d'entrée est 5.67, [5, 3, 4, 5, 5, 9, 8, 1, 2]
si votre ami veut 5,67 $ et que vous avez 5 billets de 20 $, 3 billets de 10 $, etc. Votre sortie sera la quantité de pièces / billets qui donne à votre ami autant de métal / papier / plastique que possible.
S'il n'est pas possible de donner à votre ami le montant exact qu'il souhaite, donnez-lui le montant le plus proche que vous puissiez payer, supérieur à ce qu'il souhaite. Par exemple, si votre ami veut 0,07 $ mais que vous en avez seulement [0, 0, 0, 0, 0, 2, 4, 2, 0]
, donnez-lui 2 pièces de 0,05 $ (pas 1 $ 0,10 car cela ne lui donnerait pas autant de pièces que possible!).
Si votre ami veut plus d'argent que vous, donnez-lui tout votre argent (et priez pour que vous n'ayez rien à acheter).
Cas de test
Input: 6.54, [9, 8, 7, 6, 5, 4, 3, 2, 4]
Output: [0, 0, 0, 1, 4, 1, 2, 1, 4]
Input: 2, [0, 1, 0, 0, 0, 0, 0, 0, 0]
Output: [0, 1, 0, 0, 0, 0, 0, 0, 0]
Input: 9999, [0, 0, 0, 0, 0, 0, 0, 0, 1]
Output: [0, 0, 0, 0, 0, 0, 0, 0, 1]
Input: 0, [99, 99, 99, 99, 99, 99, 99, 99, 99]
Output: [0, 0, 0, 0, 0, 0, 0, 0, 0]
C'est le code-golf donc le code le plus court gagne.
2.00
et20.00
mais non0.2
ou0.02
:(Réponses:
Nettoyer , 167 octets
Définit la fonction
@
, en prenantReal
et[Int]
.Essayez-le en ligne!
la source
JavaScript, 213 octets
C'est une mémoire assez lente et coûteuse, alors n'essayez que de petits cas
la source
Kotlin , 298 octets
Embellie
Tester
L'exemple 4 provoque OutOfMemory, mais les 3 autres fonctionnent bien.
la source