Anda sedang menulis program untuk mesin kasir otomatis. Pengguna perlu ganti dengan jumlah koin paling sedikit yang digunakan. Tulis sebuah program yang mengambil jumlah (katakanlah $ 1,53) dan berikan perubahan dalam denominasi AS - dalam contoh ini: 1 x satu dolar, 1 x lima puluh sen dan 3 x satu sen. Program terpendek akan menjadi pemenang. Poin bonus untuk mendukung mata uang lain (mis. Denominasi Inggris) dan mata uang tidak biasa (1, 2, 3 sen?)
Anda memiliki denominasi AS: 1 sen, 5 sen, 10 sen, 25 sen, 50 sen, 1 dolar (uang kertas atau koin), 2 dolar, 5 dolar, 10 dolar.
Anda memiliki denominasi UK: 1 pence, 2 pence, 5 pence, 10 pence, 20 pence, 50 pence, £ 1, £ 2, £ 5 (uang kertas atau koin), £ 10.
Jawaban:
Windows PowerShell, 108
111117Upaya pertama, ungolfed sejauh ini:
Catatan implementasi:
Jika 3 dan 4 tidak perlu dipenuhi (yaitu saya mengontrol format input ;-)), maka program berikut sudah cukup (71):
sumber
Mathematica: 110 karakter
Pemakaian
Atau
(6 karakter lagi) memberi
Untuk denominasi lain, cukup ubah tabel rasional {10, ...., 5 / 100,1 / 100}
sumber
D: 225 Karakter
Lebih Jelas:
Hanya menangani mata uang AS. Mengambil nilai sebagai nilai floating point pada baris perintah (harus memiliki 0 terdepan untuk nilai di bawah 1 dolar). Tidak menerima $ sebagai bagian dari nilai. Output jumlah masing-masing jenis tagihan / koin pada baris yang terpisah. Misalnya input 1,53 menghasilkan:
0 20
0 10
0 5
1 1
2 25/100
0 10/100
0 5/100
3 1/100
sumber
Mathematica, 51 byte
memasukkan
keluaran
Mathematica, 82 byte --WITH BONUS--
Memasukkan
keluaran
sumber
Javascript,
8483 byteMenggunakan algoritma serakah.
sumber
APL (Dyalog) , 19 byte
Anjurkan untuk jumlah yang diinginkan dan kemudian untuk denominasi yang dinyatakan dalam satuan terkecil (sen / sen).
Cobalah online!
⎕CY'dfns'
C o p y yangdfns
kerja⎕ stamps⎕
meminta masukan dan digunakan sebagai argumen untuk itustamps
fungsisumber