Saya tahu, judulnya membuat Anda bingung
Dengan jumlah uang yang dikeluarkan, jumlah koin paling sedikit adalah jumlah itu
Contohnya
0.1
1 dime
0.01
1 penny
0.28
1 quarter 3 penny
0.56
2 quarter 1 nickel 1 penny
1.43
5 quarter 1 dime 1 nickel 3 penny
Spec
- 100 sen dalam satu dolar.
- Nilai dari setiap jenis koin adalah:
penny
1 sennickel
5 sendime
10 senquarter
25 sen
Built-in yang meremehkan tugas ini tidak diizinkan.
I / O
Input adalah desimal yang mewakili nilai dolar total
- Tidak perlu jamak
- Pesan:
quarter
->penny
- Output seharusnya
<#_of_coins> <coin type>
- Seperator:
,
atau,
atau
Satu-satunya trailing whitespace yang diperbolehkan adalah single trailing newline / space.
Jika ada nol dari jenis koin, jenis koin itu tidak boleh ditampilkan . Misal 0.25
-> 1 quarter
tidak 1 quarter 0 dime 0 nickel 0 penny
1.43
, yang lebih besar dari1
(less than 1)
bagian itu seharusnya tidak ada di sana. Lupa menghapusnya di kotak pasir, kurasa2 quarter(2 spaces)1 nickel 1 penny
?13.00
dapat menjadi input yang mungkin tetapi input tidak akan pernah13
. Saya akan selalu memiliki desimalJawaban:
CJam, 60
Script ini tampaknya memiliki banyak ruang untuk perbaikan tetapi ini lebih pendek daripada yang sejauh ini. Ini menggunakan perintah built in "md" yang mengembalikan hasil integer dari divisi dan sisanya. Ini melakukan hal berikut:
Coba di sini
versi sebelumnya:
sumber
JavaScript ES6, 107 byte
Matematika sederhana.
sumber
|0
setelahn%5
?Python 2, 120 byte
Untuk amannya, ubah menjadi sesuatu yang pasti berfungsi untuk memperbaiki komentar @ Ogaday, setidaknya untuk saat ini. Saya tidak yakin apakah saya membutuhkannya atau tidak
int()
, tetapi saya kesulitan meyakinkan diri saya bahwa saya tidak membutuhkannya.adalah byte tambahan mati, tetapi mencetak tambahan
L
untuk input besar (walaupun kode ini tidak bekerja untuk input yang sangat besar, karena presisi float).sumber
a=40/a+5^12
[x^k for x in [10, 5, 1]]
dan[k/y for y in [25, 10, 5]]
untuk berbedak
, kemudian melihat bahwa dua daftar diimbangi oleh 5. Mungkin suboptimal, tapi saya belum punya waktu untuk brute force.10.03
dan10.04
. Ini berhubungan dengan representasi Python tentang pelampung dan bagaimana ia membulatkannya menjadi int. Coba"print %d"%(10.03*100)
.n=int(''.join(raw_input().split(".")))
mungkin bekerja, tapi cukup bertele-tele.dc, 104
Baris baru ditambahkan untuk "keterbacaan" :
sumber
Retina , 97
Terima kasih (seperti biasa) ke @randomra - menyelamatkan 1 byte.
Mengasumsikan input baik dalam bentuk
xxx.yy
atauxxx.y
.Cobalah online.
sumber
$&
adalah sama$0
sehingga Anda dapat menyimpan byte dalam$0.0
oleh$&0
.Vitsy,
11010097 byteYa, tunggu dulu, saya masih memodernisasi ini.
Penjelasan dalam mode verbose segera-datang:
Cobalah online!
sumber
retrauq
hampir seperti sebuah kata ...Java 8 lambda, 165 byte
Diharapkan input
y
berupa double atau float.Begitu banyak ternary. ; -;
sumber
;-;
Apa itu? Apakah itu wampa?JavaScript ES6,
202200 byteSaya harap ini bisa bermain golf ...
Kode tidak dikunci:
sumber
LabVIEW, 62 LabVIEW Primitif
Icreated 2 Array untuk nama-nama dan nilai-nilai dan pergi melalui mereka dari atas (array indeks dengan i) menggunakan operator modulo (hal R IQ). Koin yang tersisa dilewatkan ke register geser.
Jika nilainya lebih besar dari 0, saya mengubah angka menjadi string dan merangkai string yang diturunkan ke bawah angka dan nama koin dan memasukkannya kembali ke dalam register geser.
Ijus menyadari gif saya tidak menunjukkan kasus yang salah tetapi tidak ada yang bisa dilihat, itu hanya melewati string yang masuk.
sumber
Japt, 77 byte
Untungnya, keempat nama koin dapat dikompres. The
¿
harus menjadi literal byte 0x81. Uji secara online!sumber
73 quarter 1 nickel 2 penny
. 73 * .25 + 1 * .05 + 2 * .01 = 18.32 bukannya 18.33.C,
147144142140 byteTidak disatukan dengan tes:
sumber
char*[]
denganchar**
,int a[]
denganint*a
, dan letakkanm%=a[i++]
di bagian terakhir dari for loop. Harus menyimpan 4 byte. Belum mengujinya, jadi coba saja masing-masing.m%=a[i++]
sedikit, terima kasih.if(m/a[i])
denganm/a[i]&&
untuk menyimpan 2 byte lebih banyak."quarter\0dime\0nickel\0penny"
di printf. Setiap \ 0 mengakhiri string, menyimpan 1 char masing\0
menyebabkan program macet. Saya tidak yakin bagaimana iterasi seharusnya bekerja pada string semacam itu.MATL , 82
106107Cobalah di MATL Online!
sumber
JavaScript,
156145144 byteTidak cocok dengan jawaban formula ETHproduksi, tetapi tetap ...
Ini adalah salah satu pertandingan golf putaran pertama saya, jadi setiap peningkatan sangat dihargai! Saya sudah mencuri "xor trunc" ETH - maaf, itu terlalu pintar :-)
Lebih mudah dibaca:
Catatan: Saat pengujian saya menyadari bahwa JavaScript (setidaknya pada mesin saya?) Membaginya
1.13 / 0.01
menjadi1.12999...
, membuat (dan mungkin semua kiriman JS lainnya) tidak berfungsi 100% dengan benar ...sumber
Perl 5 -
128124 byteSaya kira ini bisa ditulis ulang menjadi jauh lebih pendek tetapi saya benar-benar tidak bisa melihatnya.
EDIT: Hanya trik matematika untuk menyimpan 4 karakter.
sumber
Perl 6 , 96 byte
Pemakaian:
sumber
Python 2,
167161 bytePembaruan 1: Mencuri ide Sp3000 untuk menggunakan input () dan menjadikan kode saya sebagai skrip alih-alih fungsi.
sumber
C, 162 byte
Sayangnya, tidak berfungsi tanpa
#include
.Tidak disatukan
sumber
Lua 5.3,
141139132131 byteSemacam berdasarkan pada jawaban Python Sp3000, tetapi dengan formula ajaib saya sendiri.
Edit - meningkatkan
a
formula. Sebelumnya itua=a*3%13~#s%4
.Sunting 2 - sebelumnya saya gunakan
math.ceil
untuk membulatkan dan mengkonversi ke integer. Sekarang saya menggunakan kembali//
untuk membulatkan dan menambahkan~~
untuk mengkonversi ke integer.Sunting 3 - mencukur karakter dengan mengubah pola dari
"%w+ "
menjadi".- "
.sumber
K (oK) ,
9578 byteLarutan:
Cobalah online!
Contoh:
Penjelasan:
Modulo input dengan masing-masing koin, kemudian bagi koin dengan hasilnya.
Beri makan setiap hasil bersama dengan nama koin ke dalam fungsi, mengembalikan nilai string keduanya jika jumlah koin tidak nol.
Ratakan semuanya dan gabungkan bersama dengan spasi putih.
sumber
Kotlin , 147 byte
Yg diperindahkan
Uji
TIO
TryItOnline
sumber