हाई स्कूल से अपने पुराने त्रिकोणमिति नोट खोदने का समय! चुनौती विभिन्न त्रिकोणों के अज्ञात पक्षों और कोणों को हल करना है। और जैसा कि कोड गोल्फ में प्रथागत है, सबसे छोटा कार्य कोड जीतता है।
यह कोई तुच्छ समस्या नहीं है; अजगर में मेरा संदर्भ कार्यान्वयन वर्तमान में 838 837 वर्णों के नीचे है , लेकिन मुझे यकीन है कि आप गोल्फ समाधानों को बहुत छोटा कर पाएंगे।
इसके अतिरिक्त, यदि आप फंस गए हैं, तो विकिपीडिया पर इस खंड को आपको जाना चाहिए: त्रिभुज: पक्षों और कोणों की गणना करना ।
इनपुट
निम्नलिखित त्रिकोण इस चुनौती में प्रयुक्त पक्षों और कोणों के नाम दर्शाता है। ध्यान दें कि पक्ष लोअरकेस हैं और कोण अपरकेस हैं।
इनपुट को छह अंतरिक्ष-अलग मानों के stdin
रूप में या तो कमांड-लाइन तर्क (आपकी पसंद) के रूप में दिया जाता है। छह मूल्य पक्षों a, b, c
और कोणों के अनुरूप हैं A, B, C
। अज्ञात पक्षों को प्रश्न चिह्न ( ?
) के रूप में दिया गया है । इनपुट और आउटपुट एंगल दोनों ही रेडियन में होने चाहिए। आप मान सकते हैं कि इनपुट मान सही हैं (आपको कुछ भी मान्य नहीं करना है)। आप यह भी मान सकते हैं कि इनपुट त्रिकोण गैर-पतित है, और यह कि सभी पक्ष और कोण नॉनजरो हैं।
निम्न उदाहरण इनपुट आपको बताता है कि पक्ष a
है 8
, पक्ष b
है 12
और कोण A
है 0.5
रेडियंस:
8 12 ? 0.5 ? ?
उत्पादन
आउटपुट इनपुट के रूप में एक ही प्रारूप में दिया गया है - छह अंतरिक्ष-अलग संख्या stdout
। एकमात्र अपवाद तब है जब इनपुट त्रिकोण को हल करना संभव नहीं है - फिर स्ट्रिंग "No solution"
को लिखा जाना चाहिए stdout
। यदि दो समाधान संभव हैं, तो वे दोनों उनके बीच एक नई रेखा के साथ आउटपुट होते हैं।
उपरोक्त इनपुट के लिए आउटपुट निम्न है:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
आउटपुट के लिए बहुत अधिक सटीकता की आवश्यकता नहीं है, लेकिन कम से कम एक जोड़ी दशमलव की आवश्यकता है।
नियम
- इनपुट
stdin
या कमांड-लाइन तर्कों से पढ़ा जाता है - आउटपुट को लिखा है
stdout
- यदि दिए गए इनपुट से दो समाधान संभव हैं, तो आउटपुट दोनों
- यदि एक या दो स्पष्ट समाधान प्राप्त करने के लिए बहुत कम जानकारी है, तो इसे एक
"No solution"
मामला मानें - कोई अंतर्निहित या पहले से मौजूद कोड का उपयोग नहीं किया जा सकता (बेशक आप ट्रिग फ़ंक्शंस का उपयोग कर सकते हैं, लेकिन "
solveTriangle
" या ऐसा नहीं) - सबसे छोटा कोड जीतता है
परीक्षण के मामलों
में 3 4 5 ? ? ?
बाहर 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
में ? 4 ? 0.64 0.92 1.57
बाहर 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
में ? ? 5 ? 0.92 ?
बाहर No solution
में ? ? 5 ? 0.92 1.57
बाहर 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
में 8 12 ? 0.5 ? ?
बाहर (दो समाधान)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
में 8 12 ? ? .5 ?
बाहर 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837