Tingkat Ketidakjenuhan
Ini bukan teka-teki kode yang sangat sulit - tetapi saya tertarik untuk melihat banyak cara Anda menyelesaikannya.
Derajat Unsaturasi adalah jumlah ikatan kimia ganda antara atom, dan / atau bilangan cincin dalam suatu senyawa kimia.
Anda akan diberikan rumus molekuler senyawa kimia dalam bentuk XaYbZc (di mana a, b dan c adalah jumlah atom X, Y atau Z dalam senyawa) - formulanya bisa panjang dan mengandung unsur kimia apa pun dalam tabel periodik (meskipun elemen selain C, H, N, F, Cl, Br, saya dapat diabaikan karena tidak ditampilkan dalam rumus). Senyawa ini akan mengandung setidaknya satu atom karbon. Anda harus menghitung dan menampilkan Derajat Ketidakjenuhannya.
Misalnya, senyawa benzena (gambar di bawah) memiliki DoU 4 karena memiliki tiga ikatan rangkap (ditunjukkan oleh garis ganda antara atom), dan cincin tunggal (sejumlah atom yang terhubung dalam satu lingkaran):
Seperti yang didefinisikan oleh LibreTexts :
DoU = (2C + 2 + N - X - H) / 2
Dimana:
C
adalah jumlah atom karbonN
adalah jumlah atom nitrogenX
adalah jumlah atom halogen (F
,Cl
,Br
,I
)H
adalah jumlah atom hidrogen
Kasus uji:
C6H6 --> 4
C9H2O1 --> 0
C9H9N1O4 --> 6
U1Pt1 --> Not a valid input, no carbon
Na2O1 --> Not a valid input, no carbon
C1H1 --> 1.5, although in practice this would be one, but is a part of a compound rather than a compound in entirety.
N1H3 would return 0 - though in practice it isn't an organic compound (in other words it contains no carbon) so the formula wouldn't apply and it isn't a valid input
Untuk penjelasan tentang CH lihat di sini
Intinya, Anda harus mengidentifikasi jika ada unsur-unsur di atas (C, H, N, F, Cl, Br, I) dalam senyawa, dan jika ada berapa banyak. Kemudian, hitung Derajat Ketidakjenuhan menggunakan rumus di atas.
Hanya C, H, N, F, Cl, Br, dan I yang merupakan input yang valid untuk rumus DoU. Untuk keperluan teka-teki ini, elemen lainnya dapat diabaikan sepenuhnya (mis. Jika komponnya adalah C6H6Mn hasilnya masih 4). Jika tidak ada senyawa di atas, jawabannya adalah nol.
Anda dapat mengasumsikan bahwa semua input senyawa secara kimiawi memungkinkan, mengandung setidaknya satu atom karbon, dan diketahui ada. Jika input tidak valid, program dapat menampilkan 0 atau -1, atau tidak menghasilkan apa-apa.
Aturan
Aturan dan celah IO standar berlaku. Input harus berupa string standar, dan Anda dapat mengasumsikan input tidak akan kosong. Ini adalah codegolf - jadi kode terpendek dalam byte menang.
C9H2O1 --> 0
. Bukankah seharusnya angka 9? (2*9+2+0-0-2)/2
Na2O
and Methylidyne:CH
andCCl4He
. Ini adalah beberapa kasus sudut yang dapat memecahkan beberapa solusi. Ngomong-ngomong, bukankah itu penting bagi orang lain selain Mathematica (mungkin), tetapi dapatkah kita berasumsi bahwa senyawa (dapat) ada?