pengantar
Anda memiliki teman yang terus meminta pinjaman dan Anda bosan karenanya. Hari ini, dia datang untuk pinjaman lagi. Alih-alih menolak tawarannya, Anda mendapatkan ide bagus: troll teman Anda dengan memberinya koin / tagihan sebanyak mungkin.
Tantangan
Anda akan menerima sebagai masukan: jumlah uang yang diinginkan teman Anda untuk pinjaman dan jumlah koin / tagihan yang Anda miliki. Untuk tantangan ini, denominasi yang mungkin adalah $ 20.00, $ 10.00, $ 5.00, $ 2.00, $ 1.00, $ 0.25, $ 0.10, $ 0.05, dan $ 0.01. Contoh input adalah 5.67, [5, 3, 4, 5, 5, 9, 8, 1, 2]
jika teman Anda ingin $ 5,67 dan Anda memiliki 5 $ 20 tagihan, 3 $ 10 tagihan, dll. Output Anda akan menjadi jumlah koin / tagihan yang memberi teman Anda logam / kertas / plastik sebanyak mungkin.
Jika tidak mungkin memberi teman Anda jumlah uang yang tepat yang diinginkannya, berikan jumlah uang terdekat yang dapat Anda bayar yang lebih besar dari yang ia inginkan. Misalnya, jika teman Anda ingin $ 0,07 tetapi Anda hanya punya [0, 0, 0, 0, 0, 2, 4, 2, 0]
, berikan dia 2 $ 0,05 koin (bukan 1 $ 0,10 karena itu tidak akan memberinya koin sebanyak mungkin!).
Jika teman Anda menginginkan lebih banyak uang daripada yang Anda miliki, berikan dia semua uang Anda (dan berdoa Anda tidak perlu membeli apa pun).
Uji kasus
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]
Ini adalah kode-golf sehingga kode terpendek menang.
2.00
dan20.00
tetapi tidak0.2
atau0.02
:(Jawaban:
Bersih , 167 byte
Menentukan fungsi
@
, mengambilReal
dan[Int]
.Cobalah online!
sumber
JavaScript, 213 Bytes
Ini sangat lambat dan biaya memori, jadi coba saja kasing kecil
sumber
Kotlin , 298 byte
Yg diperindahkan
Uji
Contoh 4 menyebabkan OutOfMemory, tetapi 3 lainnya berfungsi dengan baik.
sumber