Andrew adalah seorang ahli kimia, tertarik pada keasaman solusi dan pertanian. Setelah berbulan-bulan penelitian (Google bukan temannya), ia datang dengan tabel berikut * mengenai tingkat keasaman yang dapat dibaca manusia dalam hal pH (potensi Hidrogen) :
Denominasi | kisaran pH | ------------------------- + ------------------------ ----- Sangat asam | di bawah 3.5 ------------------------- + ------------------------ ------ Sangat asam | antara 3.5 dan 4.4 ------------------------- + ------------------------ ------ Sangat asam | antara 4.5 dan 5.0 ------------------------- + ------------------------ ------ Sangat asam | antara 5.1 dan 5.5 ------------------------- + ------------------------ ------ Cukup asam | antara 5.6 dan 6.0 ------------------------- + ------------------------ ------ Sedikit asam | antara 6.1 dan 6.5 ------------------------- + ------------------------ ------ Netral | antara 6.6 dan 7.3 ------------------------- + ------------------------ ------ Sedikit basa | antara 7.4 dan 7.8 ------------------------- + ------------------------ ------ Basa sedang | antara 7,9 dan 8,4 ------------------------- + ------------------------ ------ Sangat basa | antara 8.5 dan 9.0 ------------------------- + ------------------------ ------ Sangat basa | lebih dari 9.0
Diberikan bilangan desimal non-negatif yang mewakili pH suatu zat, mengeluarkan Denominasinya. Anda dapat mengambil input dan memberikan output dengan metode standar apa pun . Jenis data yang diizinkan untuk Anda input adalah:
- Mengapung
- Dua kali lipat
- Tipe data angka desimal standar bahasa Anda
- Tali
Dan Anda harus menampilkan String yang mewakili denominasi. Built-in yang terkait dengan kimia dilarang (Maaf, Mathematica!) .
Aturan Aproksimasi: Jika pH yang Anda terima berada di antara batas atas suatu denominasi dan batas bawah dari yang berikutnya (misalnya antara 7,8 dan 7,9), ia akan didekati dengan nilai terdekat antara keduanya: jika pH ≥ batas atas dari pertama + 0,5, maka ia harus menerima denominasi kedua, tetapi jika pH <atas batas pertama + 0,5, maka ia harus menerima yang pertama (misalnya 7,85 diperkirakan 7,9, tetapi 7,84999 diperkirakan 7,8). Lihat kasus uji untuk klarifikasi.
Kasus uji:
Input -> Output 6,40 -> Sedikit asam 8.399 -> Basa sedang 3,876 -> Sangat asam 10.60 -> Sangat basa 0,012 -> Sangat asam 7.30 -> Netral 7.85 -> Basa sedang (aturan aproksimasi diterapkan) 7,849 -> Basa sedikit (aturan aproksimasi diterapkan) 6.55 -> Netral (aturan aproksimasi diterapkan)
Ini adalah kode-golf , sehingga pengiriman terpendek yang valid (dalam byte) menang!
* Andrew tidak menemukan itu, itu Wikipedia !
Jawaban:
Jelly ,
77 7371 byteTautan monadik yang mengambil nomor dan mengembalikan daftar karakter; atau program lengkap mencetak hasilnya.
Cobalah online!
Bagaimana?
sumber
PHP , 199 byte
Cobalah online!
sumber
C # (.NET Core) , 236 byte
Cobalah online!
Solusi ini mempertimbangkan bahwa
p
tidak boleh lebih besar dari 14.sumber
T-SQL,
305299 byteInput melalui tabel t yang sudah ada sebelumnya dengan
DECIMAL(4,1)
kolom a , sesuai aturan Input / Output kami .Karena
DECIMAL(4,1)
tipe data, pembulatan "aturan aproksimasi" apa pun terjadi ketika nilai dimasukkan ke dalam tabel input, jadi tidak perlu dikelola secara eksplisit oleh kode saya.Setelah penghematan ruang
REPLACES
dilakukan, ini adalah kueri SQL sederhana yang bergabung dengan tabel input kami dengan daftar nilai kami:Saya membalikkan urutan jadi
TOP 1
pilih yang pertama kurang dari nilai input kami.Bahkan bentuk ini (setelah menghapus jeda baris dan ruang ekstra) cukup bagus, sebesar 318 byte . Menambahkan overhead
DECLARE
,REPLACES
DANEXEC
hanya menjadi sepadan dengan semua frasa yang diulang.EDIT : Simpan 6 byte dengan menghapus "0" yang tidak perlu pada beberapa nilai
sumber
05AB1E ,
818079777674 byteCobalah online!
Suite uji
Penjelasan
sumber
Retina , 228 byte
Cobalah online! Tautan termasuk test suite. Penjelasan:
Lipat gandakan input dengan 100 dengan suffixing koma desimal dan dua nol kemudian hapus koma desimal dan semua kecuali dua digit sesudahnya.
Konversikan ke unary.
Tangani semua alkali, ubah menjadi singkatan yang akan diperluas nanti.
Tangani netral.
Apa pun yang tersisa harus bersifat asam. (Tapi biarkan 1 jika pH-nya 0.001)
Tangani semua asam.
Perluas singkatan.
sumber
Python 2 , 202 byte
-15 byte terima kasih kepada @JonathanAllan
Cobalah online!
sumber
JavaScript (ES6),
192189185184 byteUji kasus
Tampilkan cuplikan kode
sumber
Excel, 240 byte
sumber
Javascript,
222209 byteMasih sedikit golf
sumber