असंतोष की डिग्री
यह एक विशेष रूप से कठिन कोड पहेली नहीं है - लेकिन मैं इसे हल करने के आपके कई तरीकों को देखने के लिए इच्छुक हूं।
असंतृप्ति की डिग्री परमाणुओं के बीच दोहरे रासायनिक बांडों की संख्या है, और / या रासायनिक परिसर में संख्या के छल्ले।
आपको XaYbZc (जहां a, b और c यौगिक में X, Y या Z के परमाणुओं की संख्या है) के रूप में रासायनिक यौगिक के आणविक सूत्र दिए जाएंगे - सूत्र किसी भी लम्बाई का हो सकता है और इसमें कोई रासायनिक तत्व हो सकता है आवर्त सारणी में (हालांकि तत्व C, H, N, F, Cl, Br के अलावा, मुझे अनदेखा किया जा सकता है क्योंकि वे सूत्र में नहीं हैं)। यौगिक में कम से कम एक परमाणु कार्बन होगा। आपको इसकी डिग्री की गणना और प्रदर्शन करना चाहिए।
उदाहरण के लिए, यौगिक बेंजीन (नीचे चित्रित) में 4 का एक डीओयू है क्योंकि इसमें तीन डबल बॉन्ड हैं (परमाणुओं के बीच एक डबल लाइन द्वारा दिखाया गया है), और एक रिंग (एक लूप में जुड़े परमाणुओं की एक संख्या):
जैसा कि लिबरटेक्स द्वारा परिभाषित किया गया है :
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
सीएच के स्पष्टीकरण के लिए यहां देखें
संक्षेप में, आपको यह पता लगाना होगा कि यौगिक में उपरोक्त तत्व (C, H, N, F, Cl, Br, I) में से कोई भी है या नहीं और कितने हैं। फिर, उपरोक्त सूत्र का उपयोग करके अनसैचुरेशन की डिग्री की गणना करें।
केवल C, H, N, F, Cl, Br और I DoU फॉर्मूला के लिए मान्य इनपुट हैं। इस पहेली के प्रयोजनों के लिए, किसी भी अन्य तत्वों को पूरी तरह से नजरअंदाज किया जा सकता है (उदाहरण के लिए यदि कंपाउंड C6H6Mn था तो परिणाम अभी भी 4 होगा)। यदि उपरोक्त यौगिकों में से कोई भी नहीं है, तो उत्तर शून्य होगा।
आप मान सकते हैं कि सभी यौगिक इनपुट रासायनिक रूप से संभव हैं, इनमें कम से कम एक परमाणु कार्बन होता है, और इसका अस्तित्व ज्ञात है। यदि इनपुट अमान्य है, तो प्रोग्राम 0 या -1 आउटपुट कर सकता है, या कोई परिणाम नहीं दे सकता है।
नियम
मानक IO नियम और कमियां लागू होती हैं। इनपुट एक मानक स्ट्रिंग होना चाहिए, और आप मान सकते हैं कि इनपुट खाली नहीं होगा। यह कोडगोल्फ है - इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है।
C9H2O1 --> 0
। यह 9 नहीं होना चाहिए? (2*9+2+0-0-2)/2
Na2O
और मिथाइलिडाइन:CH
औरCCl4He
। ये कुछ कोने के मामले हैं जो कुछ समाधानों को तोड़ सकते हैं। वैसे, यह नहीं कि यह गणितज्ञ (शायद) के अलावा किसी के लिए भी मायने रखता है, लेकिन क्या हम मान सकते हैं कि यौगिक (मौजूद) हो सकते हैं?