"पुलिंग फ़ंक्शंस टॉट" के बारे में दो चुनौतियों में से यह दूसरी है। यहाँ थोड़ा सरल भाग I है ।
आइए पदों (x 1 , y 1 ) से (x m , y m ) पर एक बोर्ड में m नाखूनों को चलाएं । एक रबर बैंड को उन लोगों के पहले और आखिरी हिस्से में बाँधें और दूसरे नाखूनों के चारों ओर खिंचाव दें, जैसे कि बैंड सभी नाखूनों को क्रम में ट्रेस करता है। ध्यान दें कि रबर बैंड अब 2 डी अंतरिक्ष में एक टुकड़ा-रेखीय रैखिक मानकीकृत फ़ंक्शन (x (t), y (t)) का वर्णन करता है।
अब पदों में (x 1 , y 1 ) से (x n , y n ) पर बोर्ड में एक और n नाखून चलाएं । अगर हम अब पहले और आखिरी एक (जो रबड़ के सिरों से बंधा हुआ है) को छोड़कर सभी मूल एम नाखूनों को हटा देते हैं , तो रबर बैंड छोटा हो जाएगा जब तक कि यह नए नाखूनों के चारों ओर झूठ बोल रहा हो, एक और टुकड़े-टुकड़े रैखिक कार्य करता है।
एक उदाहरण के रूप में, पदों (0, 0), (2, -1), (3/2, 4/3), (7/2, 1/3), (11/2) पर m = 12 प्रारंभिक नाखून लें 16/3), (1, 16/3), (0, 1), (7, -2), (3, 4), (8, 1), (3, -1), (11, 0) , और n = 10 आगे के पदों पर नाखून (1, 1), (3, 1), (4, 4), (1, 3), (2, 2), (5, -1), (5, 0) ), (6, 2), (7, 1), (6, 0) । निम्नलिखित तीन भूखंड ऊपर वर्णित प्रक्रिया दिखाते हैं:
बड़े संस्करण के लिए: राइट-क्लिक करें -> नए टैब में खोलें
और यहाँ रबर बैंड को कसने का एक एनीमेशन है यदि आपको इसे देखने में कुछ कठिनाई हो रही है:
चुनौती
"नाखूनों" की दो सूचियों को देखते हुए, पहली सूची में सभी नाखूनों को ट्रेस करने वाले आकार से शुरू होने पर, दूसरी सूची के चारों ओर टॉट रबर बैंड को प्लॉट करें।
आप एक कार्यक्रम या फ़ंक्शन लिख सकते हैं और STDIN, ARGV या फ़ंक्शन तर्क के माध्यम से इनपुट ले सकते हैं। आप परिणाम को स्क्रीन पर प्रदर्शित कर सकते हैं या किसी फ़ाइल में एक छवि सहेज सकते हैं।
यदि परिणाम को rasterised किया जाता है, तो उसे प्रत्येक तरफ कम से कम 300 पिक्सेल की आवश्यकता होती है। अंतिम रबर बैंड और नाखूनों को कम से कम 75% क्षैतिज और ऊर्ध्वाधर छवि को कवर करना चाहिए। X और y की लंबाई का पैमाना समान होना चाहिए। आपको दूसरे सेट (कम से कम 3x3 पिक्सेल का उपयोग करके) और स्ट्रिंग (कम से कम 1 पिक्सेल चौड़ा) में नाखूनों को दिखाने की आवश्यकता है। आप कुल्हाड़ियों को शामिल कर सकते हैं या नहीं।
रंग आपकी पसंद हैं, लेकिन आपको कम से कम दो अलग-अलग रंगों की आवश्यकता है: एक पृष्ठभूमि के लिए और एक नाखून और स्ट्रिंग के लिए (हालांकि वे अलग-अलग रंग हो सकते हैं)।
आप मान सकते हैं कि दूसरी सूची में सभी नाखून रबर बैंड के प्रारंभिक आकार से कम से कम 10 -5 इकाइयां हैं (ताकि आपको फ्लोटिंग-पॉइंट अशुद्धि के बारे में चिंता करने की आवश्यकता न हो)।
यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।
और ज्यादा उदाहरण
यहाँ दो और उदाहरण हैं:
{{1, 1}, {3, 3}, {2, 4}, {1, 3}, {4, 0}, {3, -1}, {2, 0}, {4, 2}}
{{2, 1}, {3, 2}, {1, 2}, {4, 1}}
{{1, 1}, {3, 1}, {3, 3}, {1, 3}, {1, 5}, {3, 5}, {-1, 3}, {-1, 0}, {3, 4}, {5, 1}, {5, -1}, {7, -1}, {3, 7}, {7, 5}}
{{0, 0}, {0, 2}, {0, 4}, {0, 6}, {2, 0}, {2, 2}, {2, 4}, {2, 6}, {4, 0}, {4, 2}, {4, 4}, {4, 6}, {6, 0}, {6, 2}, {6, 4}, {6, 6}}
और यहां एक उदाहरण है जो शेष दो प्रारंभिक नाखूनों के महत्व को दर्शाता है। परिणाम होना चाहिए ख और नहीं एक :
{{0, 0}, {0, 1}, {-1, 1}, {-1, -1}, {1, -1}, {1, 0}}
{{-0.5, 0.5}}
इस उदाहरण को प्रदान करने के लिए एलई को धन्यवाद।