ระดับของความไม่พอใจ
นี่ไม่ใช่ปริศนาโค้ดยากโดยเฉพาะ - แต่ฉันสนใจที่จะเห็นวิธีแก้ปัญหาของคุณหลายวิธี
ระดับความไม่อิ่มตัวคือจำนวนพันธะเคมีสองชั้นระหว่างอะตอมและ / หรือจำนวนวงแหวนในสารประกอบทางเคมี
คุณจะได้รับสูตรโมเลกุลของสารประกอบทางเคมีในรูปแบบ XaYbZc (โดยที่ a, b และ c คือจำนวนอะตอมของ X, Y หรือ Z ในสารประกอบ) - สูตรอาจมีความยาวเท่าใดก็ได้และมีองค์ประกอบทางเคมีใด ๆ ในตารางธาตุ (แม้ว่าองค์ประกอบอื่นที่ไม่ใช่ C, H, N, F, Cl, Br, ฉันอาจถูกเพิกเฉยเนื่องจากไม่มีคุณสมบัติในสูตร) สารประกอบนี้จะประกอบด้วยคาร์บอนอย่างน้อยหนึ่งอะตอม คุณต้องคำนวณและแสดงระดับของความไม่พอใจ
ตัวอย่างเช่นสารประกอบเบนซีน (ในภาพด้านล่าง) มี DoU เป็น 4 เนื่องจากมีพันธะสองเท่า (แสดงโดยเส้นสองเส้นระหว่างอะตอม) และวงแหวนเดี่ยว (จำนวนอะตอมที่เชื่อมต่อในวง):
ตามที่กำหนดโดยLibreTexts :
DoU = (2C + 2 + N - X - H) / 2
ที่ไหน:
C
คือจำนวนอะตอมคาร์บอนN
คือจำนวนอะตอมไนโตรเจนX
คือจำนวนของอะตอมฮาโลเจน (F
,Cl
,Br
,I
)H
คือจำนวนอะตอมไฮโดรเจน
กรณีทดสอบ:
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
สำหรับคำอธิบายของ CH ดูที่นี่
ในสาระสำคัญคุณต้องระบุว่ามีองค์ประกอบใด ๆ ข้างต้น (C, H, N, F, Cl, Br, I) ในสารประกอบและหากมีจำนวนเท่าใด จากนั้นให้คำนวณระดับความไม่พอใจโดยใช้สูตรด้านบน
เฉพาะ C, H, N, F, Cl, Br และ I เป็นอินพุตที่ถูกต้องสำหรับสูตร DoU สำหรับจุดประสงค์ของจิ๊กซอว์องค์ประกอบอื่น ๆ อาจถูกเพิกเฉยได้อย่างสมบูรณ์ (เช่นถ้าสารประกอบเป็น C6H6Mn ผลลัพธ์จะยังคงเป็น 4) ถ้าไม่มีสารประกอบใด ๆ ข้างต้นคำตอบก็จะเป็นศูนย์
คุณอาจสันนิษฐานได้ว่าสารประกอบทั้งหมดนั้นมีความเป็นไปได้ทางเคมีประกอบด้วยอะตอมของคาร์บอนอย่างน้อยหนึ่งอะตอม หากอินพุตไม่ถูกต้องโปรแกรมอาจแสดงผลลัพธ์เป็น 0 หรือ -1 หรือสร้างผลลัพธ์ไม่ได้
กฎระเบียบ
มาตรฐาน IO กฎและช่องโหว่ใช้ อินพุตต้องเป็นสตริงมาตรฐานและคุณสามารถสมมติว่าอินพุตไม่ว่างเปล่า นี่คือ codegolf - ดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
C9H2O1 --> 0
ฉันไม่เข้าใจ ไม่ควรจะเป็น 9 หรือ (2*9+2+0-0-2)/2
Na2O
และ Methylidyne: และCH
CCl4He
เหล่านี้คือบางกรณีมุมที่อาจแบ่งการแก้ไขปัญหาเล็กน้อย โดยวิธีการที่ไม่สำคัญสำหรับใครอื่นที่ไม่ใช่ Mathematica (อาจ) แต่เราสามารถสรุปได้ว่าสารประกอบ (สามารถ) มีอยู่จริงหรือไม่?