Kami belum memiliki tantangan yang menyenangkan dan mudah dalam beberapa saat, jadi inilah dia.
Diberikan daftar bilangan bulat masing-masing lebih besar dari dan indeks sebagai input, output persentase item pada indeks yang diberikan dari total jumlah daftar.
Output harus berupa apa pun representasi alami untuk pelampung / bilangan bulat dalam bahasa Anda (unary, desimal, angka Gereja, dll.). Jika Anda memilih untuk membulatkan output dengan cara apa pun, itu harus memiliki minimal 2 tempat desimal (bila masuk akal. tidak perlu dibulatkan, tetapi juga dapat diterima).
Indeks dapat berupa indeks-1 atau indeks-0, dan akan selalu berada dalam batas-batas array.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Contohnya
Menggunakan 1-diindeks dan dibulatkan menjadi 2 dp
list, index => output
[1, 2, 3, 4, 5], 5 => 5 / 15 => 33.33
[7, 3, 19], 1 => 7 / 29 => 24.14
[1, 1, 1, 1, 1, 1, 1, 1, 1], 6 => 1 / 9 => 11.11
[20, 176, 194, 2017, 3], 1 => 20 / 2410 => 0.83
[712], 1 => 712 / 712 => 100
Atau, sebagai tiga daftar:
[[1, 2, 3, 4, 5], [7, 3, 19], [1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 176, 194, 2017, 3], [712]]
[5, 1, 6, 1, 1]
[33.33, 24.14, 11.11, 0.83, 100]
sumber
Jawaban:
APL (Dyalog Unicode) , 9 byte SBCS
Fungsi infiks diam-diam anonim. Mengambil indeks sebagai argumen kiri dan daftar sebagai argumen kanan.
Cobalah online!
100
seratus×
waktu⌷
elemen yang diindeks÷
dibagi dengan1⊥
jumlah (lit. evaluasi base-1) dari⊢
argumen yang benarsumber
C # (Visual C # Interactive Compiler) , 22 byte
Cobalah online!
sumber
Python 3 , 26 byte
Fungsi tanpa nama yang menerima bilangan bulat (indeks-indeks 0) dan daftar yang mengembalikan persentase.
Cobalah online!
sumber
Jelly , 7 byte
Tautan diad yang menerima bilangan bulat, indeks berbasis satu di sebelah kiri dan daftar angka di sebelah kanan yang menghasilkan persentase.
Cobalah online!
Bagaimana?
sumber
05AB1E , 6 byte
Program lengkap mengambil indeks kemudian daftar. Menggunakan pengindeksan 0.
Cobalah online!
Bagaimana?
sumber
R 28 byte
Cobalah online!
sumber
l
pada indeksn
, tidak hanya dibagi dengann
(lihat[7, 3, 19], 1
testcase )l[]
sekitarn
)C (gcc) , 64 byte
Diindeks 0. Satu-satunya menyenangkan bit adalah kesadaran bahwa
1e2
adalahdouble
, menyimpan byte lebih100.
!Cobalah online!
sumber
Java (JDK) , 47 byte
Cobalah online!
sumber
1e2
alih-alih100
? Apakah karena100
bilangan bulat dan1e2
dianggap sebagai angka titik mengambang?1e2
membawa tipe ganda, yanga[i]
dan jumlah tidak. Karena tantangan mengharuskan untuk mengembalikan angka floating point, di situlah saya dapat menggunakannya.(a,i)->1e2*a[i]/IntStream.of(a).sum()
. Sunting:> :( panah lambda saya yang malang(a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()
54 byte. Jawaban saya saat ini hanya 47 byte. Juga,a->i->
satu byte lebih pendek dari(a,i)->
.Haskell,
2018 bytesA dyadic operator (
?
) taking the (0-indexed) index on the left and a list on the right which yields the percentage.Try it online!
sumber
J, 10 bytes
Try it online!
0-indexed
sumber
Wolfram Language (Mathematica), 15 bytes
Try it online!
Input as
list, index
sumber
##[[]]
is awesome!JavaScript (ES6), 30 bytes
Takes input as
(array)(index)
, where index is 0-based.Try it online!
sumber
MATL, 9 bytes
Try it online!
Explanation
Try it online!
sumber
PHP (7.4), 35 bytes
Try it online!
Input index is 0-based.
sumber
K (oK),
1514 bytes-1 byte thanks to ngn!
Try it online!
0-indexed
sumber
(x@y)
->x[y]
Red,
3129 bytes-2 bytes thanks to ErikF
Try it online!
sumber
1e2
daripada100.0
: Coba online!. It's pretty neat how many languages can use this trick!PowerShell, 34 bytes
Try it online!
Shame parameters are so dang expensive in Powershell.
sumber
Gores 3.0
2423 blok /239228 byteAtau dalam sintaks SB
Disimpan 11 byte berkat @ JoKing
Cobalah dari awal
Jawab Sejarah
Atau dalam sintaks SB
Cobalah dari awal
Masukan dalam bentuk:
Aku benar-benar harus berhenti melakukan ini pada diriku sendiri. Tapi ini sangat menyenangkan!
sumber
repeat length of m
kelength of m-1
dan menyelamatkan diridelete n
?delete n of m
seperti yang saya sarankan maka itu akanPyth , 13 byte
Cobalah online!
Pertama kali menggunakan Pyth jadi mungkin ada beberapa optimasi yang cukup besar di sini, tapi saya tidak tahu di mana mereka ...
0-index, menerima input sebagai
list, index
sumber
Perl 5
-ap -MList::Util=Sum
, 19 byteCobalah online!
Ambil daftar, spasi terpisah pada baris pertama, indeks (berbasis 0) pada baris kedua.
sumber
Japt , 8 byte
Cobalah
sumber
TI-Basic , 12 byte (12 token)
1-diindeks
Membawa daftar
Ans
dan meminta pengguna untuk indeksContoh dijalankan
Penjelasan:
sumber
Retina 0.8.2 , 102 byte
Cobalah online! Tautan termasuk kasus uji. Mengambil input sebagai
index;list,...
. Penjelasan:Konversikan ke unary.
Indeks ke dalam daftar.
Jumlahkan daftar.
Lipat gandakan nilai yang diinginkan dengan 10000 dan bagi dengan jumlah dengan pembulatan dengan menambahkan setengah dari jumlah pertama.
Pastikan bahwa hasilnya memiliki setidaknya tiga digit.
Masukkan titik desimal di posisi terakhir kedua.
sumber
Ruby ,
252321 byteCobalah online!
sumber
Perl 6 , 21 byte
Cobalah online!
Solusi sederhana, karena saya tidak bisa menggunakan parameter curried dengan
$b
parameter diindeks. Solusi funner yang tidak harus menangani dua parameter dengan menggunakanrotate
fungsi sebagai gantinya:Cobalah online!
Tapi sayangnya dua byte lebih lama
sumber
Oktaf , 21 byte
Cobalah online!
sumber
MathGolf ,
76 bytePengindeksan berbasis 0.
Cobalah online.
Penjelasan:
sumber
Ikon , 53 byte
Cobalah online!
Satu-satunya hal yang menarik di sini adalah menemukan jumlahnya. Ikon adalah salah satu bahasa pertama yang memiliki generator.
!
menghasilkan semua nilai daftarL
yang diakumulasikans
. Biasanya kita perlu menulisevery s+:=!L
, tetapi saya menggunakan backtracking&\z
, yang memeriksa apakahz
variabel tidak adanon-null
, yang tidak, dan mengekstrak nilai berikutnya dari daftar sampai kelelahan.sumber
Faktor , 46 byte
Cobalah online!
Diindeks 0
sumber
Batch, 111 byte
Takes input as index and list as command-line arguments. Note: Only works for index values from
1
to9
due to limitations of Batch; a 0-indexed version could be written which would be able to index the first 10 elements. Explanation:Shift the index to
%0
and the list to%1
...%9
(or less). Note however that Batch'sshift
does not affect%*
.Get all of the parameters, space separated.
Ubah spasi menjadi
+
s dan evaluasi secara hitung, sehingga mengambil jumlah, tetapi kurangi indeks. Kemudian indeks ke dalam daftar, kalikan dengan 10.000, tambahkan setengah dari jumlah, dan bagi dengan jumlah. Akhirnya lakukan divmod sebanyak 10 kali untuk menghasilkan tempat desimal. (%
Operator aritmatika memiliki arti khusus dalam Batch dan biasanya perlu digandakan tetapicall
kemudian membutuhkan penggandaan lebih lanjut.)Keluarkan hasilnya dan tempat desimal.
sumber