बाउल पाइल ऊँचाई
इस पहेली का लक्ष्य कटोरे के ढेर की ऊंचाई की गणना करना है।
एक कटोरे को मोटाई के बिना रेडियल सममित डिवाइस के रूप में परिभाषित किया गया है। इसका सिल्हूट आकार भी एक बहुपद है। स्टैक को रेडी की एक सूची द्वारा वर्णित किया गया है, प्रत्येक को एक बहुपद के साथ जोड़ा गया है, जिसे गुणांक की सूची के रूप में इनपुट के रूप में दिया गया है (उदाहरण के लिए सूची 3.1 4.2
बहुपद प्रतिनिधित्व करती है )।
बहुपद में मनमानी डिग्री हो सकती है। सादगी के लिए, ढेर की ऊंचाई को शीर्ष-सबसे कटोरे के केंद्र की ऊंचाई के रूप में परिभाषित किया गया है (उदाहरण के लिए उदाहरण 3 की साजिश देखें)।
परीक्षण के मामले प्रारूप में हैं radius:coeff1 coeff2 ...
: प्रत्येक पंक्ति कटोरे की त्रिज्या का प्रतिनिधित्व करने वाली एक फ्लोट संख्या से शुरू होती है, इसके बाद बृहदान्त्र और एक अंतरिक्ष-पृथक सूची जिसमें सम शक्तियों के लिए गुणांक होते हैं, शक्ति 2 से शुरू होती है (शून्य स्थिर भाग निहित है) । उदाहरण के लिए, रेखा 2.3:3.1 4.2
त्रिज्या का एक कटोरा 2.3
और आकृति-बहुपद का वर्णन करती है 3.1 * x^2 + 4.2 * x^4
।
उदाहरण 1
42:3.141
शून्य ऊंचाई के ढेर का वर्णन करता है क्योंकि किसी भी कटोरे में कोई ऊंचाई नहीं होती है।
उदाहरण 2
1:1 2
1.2:5
1:3
ऊँचाई के ढेर का वर्णन करता है 2.0
(भूखंड देखें)।
उदाहरण 3
1:1.0
0.6:0.2
0.6:0.4
1.4:0.2
0.4:0 10
0.8 की ऊँचाई के ढेर का वर्णन करता है (भूखंड में हरे तीर देखें)।
यह कोड गोल्फ है, इसलिए सबसे छोटा कोड जीतता है।
मेरे पास है संदर्भ कोड है ।
संपादित करें:
संदर्भ कार्यान्वयन बहुपत्नी की जड़ों की गणना करने के लिए एक पुस्तकालय पर निर्भर करता है। आप ऐसा कर सकते हैं लेकिन आपको इसकी आवश्यकता नहीं है। चूंकि संदर्भ कार्यान्वयन केवल एक (काफी अच्छा) संख्यात्मक सन्निकटन है, मैं किसी भी कोड को स्वीकार करूंगा जो सामान्य फ्लोटिंग-पॉइंट टॉलरेंस के भीतर सही परिणाम पैदा करता है।
।
इस पहेली का एक अन्य प्रकार कटोरे को फिर से व्यवस्थित करके ऊंचाई को कम करना है। मुझे यकीन नहीं है कि अगर कोई तेज़ समाधान है (मुझे लगता है कि यह एनपी-हार्ड है)। अगर किसी के पास एक बेहतर विचार है (या एनपी-पूर्णता साबित कर सकता है), तो कृपया मुझे बताएं!
is_maximum
उदाहरण के लिए होना चाहिए return evaluate(differentiate(shape_0), root) > 0.0
। वर्तमान में, यह मूल का उपयोग करके मूल्यांकन करता है dd
(आकृतियों के बीच के अंतर का व्युत्पन्न), जिसे हमेशा 0 (जड़ों के लिए) वापस करना चाहिए। फ्लोटिंग पॉइंट त्रुटियों के कारण, परिणाम कभी-कभी 0 के करीब सकारात्मक मूल्य होता है, यही कारण है कि कोड कुछ समय के लिए सही या अधिक सटीक परिणाम उत्पन्न करता है। इनपुट की जाँच करें 1:0.2, 1:0.1 0.2
जो आउटपुट होना चाहिए0.0125
0.801
। अंतिम दो कटोरे त्रिज्या में स्पर्श करते हैं 0.1
।