Sebuah celengan adalah wadah yang digunakan untuk mengumpulkan koin di Untuk tantangan ini menggunakan empat koin AS:. Kuartal, sepeser pun, nikel, dan sen .
Tantangan
Tantangan Anda adalah membuat celengan elektronik. Tulis sebuah program (atau fungsi) yang ketika dijalankan (atau dipanggil), menampilkan (atau mengembalikan) jumlah setiap koin yang Anda miliki, serta jumlah total jumlah koin tersebut.
Memasukkan
Sebuah string, array, dll ... (pilihan Anda) dari koin ke celengan Anda (case-sensitive).
Q - Quarter(Value of 25)
D - Dime(Value of 10)
N - Nickel(Value of 5)
P - Penny(Value of 1)
Keluaran
Hitungan koin dari input dan jumlah total, dipisahkan oleh pembatas non-integer pilihan Anda. (Urutan di mana Anda menghasilkan total koin tidak masalah, tetapi total nilai koin (jumlah) harus menjadi elemen terakhir)
Contohnya
Input -> Output
P -> 1,0,0,0,1 or 0,0,0,1,1 or 0,0,1,0,1 or 1,1
N -> 0,1,0,0,5
D -> 0,0,1,0,10
Q -> 0,0,0,1,25
QQQQ -> 0,0,0,4,100
QNDPQNDPQNDP -> 3,3,3,3,123
PPPPPPPPPP -> 10,0,0,0,10
PNNDNNQPDNPQND -> 3,6,3,2,113
Aturan
Ini adalah kode-golf , jadi kode terpendek dalam byte untuk setiap bahasa menang!
Jawaban:
Python 2 , 73 byte
-3 byte terima kasih kepada @Rod
Cobalah online!
sumber
a*b for a,b in zip(C,[25,10,5,1])
denganmap(int.__mul__,C,[25,10,5,1])
untuk menyimpan beberapa bytePython 2 , 63 byte
Cobalah online!
Python 2 , 63 byte
Cobalah online!
sumber
APL (Dyalog Unicode) ,
2827 byteCobalah online!
Fungsi diam-diam. Mengambil input sebagai vektor dalam format
,'<input>'
.Terima kasih ngn untuk satu byte!
Bagaimana?
sumber
1⊥∘.=∘'PNDQ'
->'PNDQ'+.=¨⊂
R ,
7069 byteCobalah online!
Mengambil input sebagai vektor karakter individu. Konversi ke
factors
dantabulate
s mereka, lalu hitung nilainya dengan produk titik.Untuk memudahkan tujuan pengujian, saya telah menambahkan cara untuk mengkonversi dari kasus uji di atas ke input yang diharapkan fungsi.
Ini hampir tidak perlu untuk menyimpan nama koin sebagai vektor
names
, yang berarti bahwa pendekatan di bawah ini kemungkinan akan menjadi lebih golf jika kita memiliki lebih banyak jenis koin:R ,
7170 byteCobalah online!
sumber
Jelly , 19 byte
Cobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6),
6361 byteDisimpan 2 byte berkat Shaggy
Mengambil input sebagai array karakter. Keluaran
P,N,D,Q,total
.Terinspirasi oleh jawaban Python ovs .
Cobalah online!
Jawaban asli, 73 byte
Mengambil input sebagai array karakter. Keluaran
Q,D,N,P,total
.Cobalah online!
sumber
MATL ,
2220 byteCobalah online! Atau verifikasi semua kasus uji .
Penjelasan dengan contoh
Pertimbangkan input
'PNNDNNQPDNPQND'
sebagai contoh. Isi tumpukan ditampilkan terbalik, yaitu elemen atas muncul di bawah.sumber
!'PNDQ'=Xst[l5X25]!Y*
adalah 21 byte. meskipun saya akui saya belum mengujinya.Japt ,
2522 byteDisimpan 3 byte berkat @Shaggy
Uji secara online! Mengambil input dalam huruf kecil
Penjelasan
sumber
Excel (versi bahasa Polandia), 150 byte
Masukan dalam A1. Rumusnya ada di sel
B1
-F1
:menghasilkan output dari jumlah perempat, dime, sen, pennys dan jumlah dalam sel
B1
,C1
,D1
,E1
danF1
masing-masing.Versi bahasa Inggris (162 byte):
sumber
APL + WIN,
3327 byte5 byte disimpan berkat Adam
Meminta input layar dari string koin.
sumber
n,+/1 5 10 25×n←+⌿⎕∘.='PNDQ'
05AB1E ,
3026222119 byteCobalah online!
Membuang:
Hasil cetak:
Karena ada sesuatu yang dicetak, tumpukan akhir diabaikan.
sumber
J , 29 byte
Cobalah online!
Penjelasan:
'PNDQ'=/]
menciptakan tabel kesetaraan1#.
menemukan jumlah setiap baris tabel, sehingga jumlah kemunculan setiap nilai1#.*
menemukan produk titik argumen kiri dan kanannya],
menambahkan produk titik ke daftar nilaisumber
C # (.NET Core) ,
163136 byteTerima kasih kepada @raznagul karena telah menghemat banyak byte di sana!
Cobalah online!
Versi lama:
Cobalah online!
sumber
n.Count
bukann.Length
. Seperti yang dijatuhkan sepenuhnya, Anda dapat menggunakannyastring
sekarang.Perl 5
-pF
, 59 byteCobalah online!
sumber
Ruby , 66 byte
Cobalah online!
Tidak hebat.
sumber
05AB1E , 19 byte
Cobalah online!
Penjelasan
sumber
Java (OpenJDK 8) , 148 byte
Cobalah online!
Yah itu hanya satu byte lebih pendek dari pengiriman Java lainnya , tapi hei-pendek lebih pendek: D
Penjelasan:
sumber
Gol> <> , 47 byte
Cobalah online!
Format output adalah
[P Q N D Value]
.Bagaimana itu bekerja
sumber
Perl 5
-p
, 47 byteCobalah online!
sumber
Pyth,
232726 byteMenyimpan satu byte berkat @RK. Output sebagai [P, N, D, Q, nilai].
Coba di sini
Penjelasan
sumber
+Jm/Qd"PNDQ"s.b*NYJ[h05T25
C (dentang) , 112 byte
Cobalah online!
Output seq sekarang dari P, Q, D, N, total-nilai
Bekerja dengan input huruf kecil dan huruf besar.
Penjelasan:
"AYJE"
atau{64+1,64+25,64+10,64+5}
apakah. 64+ nilai koin.d=(c|c/2)&3
(digunakan sebagai indeks) memiliki nilai1,2,3,0
untukq,d,n,p
input masing-masing, baik dalam huruf besar dan kecil.sumber
C # (.NET Core) , 156 byte
sumber
Java (OpenJDK 8) , 149 byte
Cobalah online!
sumber
Retina , 50 byte
Cobalah online! Output dalam urutan D, N, P, Q, total. Penjelasan:
Hitung total dengan memasukkan
_
s yang sesuai dengan nilai setiap koin.Masukkan salinan tambahan dari setiap karakter sehingga setidaknya ada satu yang cocok.
Urutkan karakter ke dalam urutan.
Hitung jumlah setiap karakter setelah yang pertama.
sumber
SmileBASIC, 70 byte
Contoh:
Penjelasan:
sumber
C, 149 byte
Cobalah online!
C tidak memiliki array asosiatif, jadi saya memalsukannya (sangat tidak efisien, hemat memori!) Dan kemudian mengulanginya lagi dengan array pencarian untuk menambah koin. Itu tidak akan menghitung mata uang asing, meskipun :-)
sumber