Kalkulator IPK
(IPK = Indeks Prestasi Kumulatif)
Anda adalah mahasiswa yang stres selama minggu final. Alih-alih belajar untuk ujian Anda yang akan datang, Anda memutuskan yang terbaik untuk menentukan IPK apa yang akan Anda miliki di akhir semester. Dengan cara ini Anda memiliki data untuk mendukung keputusan Anda begadang semalaman untuk mendapatkan A dalam Kalkulus alih-alih B untuk tetap berada di daftar Dean!
Menjadi jurusan ilmu komputer Anda ingin menemukan cara paling keren untuk menentukan IPK ini. Tentu saja cara paling keren adalah dengan kode terpendek! Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Detail
- Perguruan tinggi yang Anda kunjungi menggunakan IPK dasar yang diskalakan bersama dengan jam kredit.
- Nilai huruf A adalah 4.0, B adalah 3.0, C adalah 2.0, D adalah 1.0, dan F adalah 0.0
- IPK Anda adalah IPK tertimbang, sehingga nilai A dalam kelas 4 jam kredit dihitung 4 kali lebih banyak dari nilai A dalam kelas jam 1 kredit (Lihat contoh di bawah ini untuk penjelasan lebih lanjut tentang bobot)
- Jam Kredit berkisar 1-4
Program Anda harus memiliki daftar dua input baris perintah, Grade dan Jam Kredit. Anda dapat menentukan cara terbaik untuk memasukkan ini ke dalam program Anda melalui baris perintah. Anda tidak perlu khawatir tentang terlalu banyak input, tetapi pastikan kode Anda dapat menangani semester 19 jam kredit.
- yaitu Input: A 1 B 4 C 2 ...
Program Anda harus menampilkan IPK, menggunakan 3 digit (yaitu X.XX)
- IPK Anda harus dibulatkan ke dua tempat desimal. Bulat dengan cara apa pun yang Anda suka (lantai, langit-langit, alas, dll ...)
Contoh Input (Pilih mana yang paling cocok untuk desain Anda)
- A1B3C2F3B4
- A1 B3 C2 F3 B4
- A 1 B 3 C 2 F 3 B 4
- A, 1, B, 3, C, 2, F, 3, B, 4
- A1, B3, C2, F3, B4
Atau salah satu kombinasi di atas di mana Anda menggunakan format daftar semua nilai, lalu jam kreditnya:
- yaitu ABAA 3 4 1 1
Contohnya
Input - A 3 B 4 A 1 A 1
Output - 3.56
Explanation: (4.0 * 3 + 3.0 * 4 + 4.0 * 1 + 4.0 * 1)/(3+4+1+1) = 3.555556 rounded off to 3.56
Input - A 4 F 2 C 3 D 4
Output - 2.00
Explanation: (4.0 * 4 + 0.0 * 2 + 2.0 * 3 + 1.0 * 4)/(4+2+3+4) = 2 rounded off to 2.00
Your GPA needs to be rounded to two decimal places
: untuk mencapai ini, orang perlu menambahkan kode tambahan yang tidak ada hubungannya dengan perhitungan IPK.Jawaban:
Jelly ,
1521 byte (12 tanpa pembulatan)+6 byte untuk pemformatan ketat (hampir pasti dimungkinkan dalam waktu kurang tapi sudah waktunya tidur)
Program lengkap yang mengambil nilai dan jam kredit masing-masing yang mencetak IPK yang dihitung (Catatan: metode pembulatan ke lantai, sebagaimana diizinkan dalam OP).
Cobalah online!
Tanpa pembulatan selama 12 byte :
Bagaimana?
sumber
Python 3 , 66 byte
-5 byte terima kasih kepada Rod.
Cobalah online!
sumber
69-ord(i)
tidak berfungsi()
, Anda juga dapat memindahkan/sum(c)
untuk menyimpan 3 byte mencapai 66 bytePerl 5 ,
5753 + 2 (-an
) =5955 byteCobalah online!
Sunting: menukar input sekitar untuk menghemat 4 byte
Format input: dipisahkan garis, kredit diikuti dengan nilai:
Contoh:
sumber
Python 2 , 69 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 39 byte
Mengambil daftar jam kredit, dan kemudian serangkaian nilai.
Tidak berfungsi pada TIO karena TIO menggunakan kernel Mathematica (yang tidak ingin mencetak angka presisi yang berubah-ubah)
sumber
Tr
N[(5-(LetterNumber@#2/. 6->5)).#/Tr@#,3]&
/.
.JavaScript (ES6), 72 byte
Masukkan format:
A1B3C2F3B4
Uji kasus
Tampilkan cuplikan kode
sumber
search
golf menjadi lebihparseInt
?parseInt
mungkin akan menjadi Golfier hanya dengan beberapa nilai lebih didukung. Satu masalah adalah perbedaan antara F = 0 dan D = 1.R , 64 byte
Cobalah online!
terima kasih kepada pengguna2390246 untuk memperbaiki bug!
sumber
LETTERS[-5]
Java, 211 byte
Format input: A1B3C2F3B4
Golf
Unglofed
Versi lain
Frealing usus saya mengatakan kepada saya bahwa menggunakan format input yang berbeda (ABCF1324) akan membuat kode lebih pendek. Sepertinya tidak. Versi di bawah ini adalah 234 byte.
Golf
Tidak disatukan
sumber
Java 1.8 ,
287249 Bytes-38 byte berkat Bumptious
Golf
Tidak disatukan
sumber
Julia 0,6 ,
46 4342 byteCobalah online!
Penjelasan
Format input
g
:: vektor nilai;h
: vektor jam kreditg%h
: Tetapkan ulang%
operator.69-Int.(g)
: Konversikan'F','D','C','B','A'
ke-1,1,2,3,4
masing-masing untuk setiap elemen g.max.( ,0)
: Kisaran penjepit ke0:4
(elemen-bijaksana).sumber