Ada beberapa masalah kalkulator tarif pajak di sini yang bergantung pada kurs yang ditentukan (khususnya tarif federal AS), tetapi tidak ada yang melakukannya untuk daftar arbitrer.
Tugas Anda adalah untuk membangun program atau fungsi yang akan mengambil daftar kurung pajak marginal yang sewenang-wenang dan menghitung jumlah pajak efektif yang dibayarkan atas jumlah tertentu dari penghasilan kena pajak.
Program Anda akan menerima sebagai masukan:
N
pasang angka dalam formulir(amt, rate)
, masing-masing mewakili braket pajak.amt
adalah jumlah penghasilan kena pajak yang di atasnya tarif pajak mulai berlaku. Jumlah ini semua akan menjadi bilangan bulat, dan muncul dalam urutan yang meningkat.rate
adalah tarif pajak, yang dinyatakan sebagai persentase desimal dari 0 hingga 100 inklusif.
Jumlah penghasilan kena pajak, sebagai bilangan bulat negatif
Jika tidak ada kurs yang ditentukan untuk $ 0, kurs tersebut diasumsikan 0%.
Atau, program Anda juga dapat mengambil dua daftar sebagai input (amt1, amt2, ...)
dan (rate1, rate2, ...)
, berisi jumlah dan tarif dalam urutan yang sama.
Program Anda kemudian akan menampilkan hutang pajak, baik untuk dua tempat desimal, atau bulat turun ke unit mata uang seluruh terdekat.
Input contoh (tanda kurung pajak Kanada terbaru, dari 2016, dengan kredit pajak pribadi dasar diterapkan dan tidak ada yang lain):
11474 15
45282 20.5
90563 26
140388 29
200000 33
393216
Dan output yang sesuai:
108357.07 or 108357
Program terpendek dalam bahasa apa pun untuk melakukan ini akan menang.
(amt, rate)
, tetapi pada dasarnya tidak mengubah masalah untuk menerima daftar yang lain, jadi saya akan memodifikasinya sehingga Anda bisa.Jawaban:
05AB1E,
3524 bytePenjelasan
Cobalah online
sumber
Haskell,
6766 byteTerima kasih Damien untuk -1 byte.
Solusi ini dalam bentuk fungsi infix
?
, tipe(Integral b, RealFrac r) => [(r, r)] -> r -> b
. Fungsi helper#
,, melakukan perhitungan yang diperlukan sambil?
berfungsi untuk menangani spesifikasi IO.sumber
((m,p):r)#i|v<-min i m=p/100*(i-v)+r#v
menghemat 1 byteMathematica
8582 byteBerasal dari kode Josh O'Brien di R.
Pemakaian
108357
sumber
Matlab, 79 byte
Dengan asumsi kita dapat mengambil
amt
danrate
sebagai vektor kolom terpisah:Jika kita tidak bisa (maka itu
a
adalah matriks dua kolomamt
danrate
) 87 byte.Penjelasan:
sumber
JavaScript (ES6), 60 byte
a
adalah array array band dan rate, yang akan menjadi[[11474, 15], [45282, 20.5], [90563, 26], [140388, 29], [200000, 33]]
contoh yang diberikan, dann
merupakan penghasilan (393216
).sumber
Swift, 61 byte
Tidak disatukan, dengan kasus uji:
sumber