मैंने एक वर्ग से बने जुड़वां ड्रैगन वक्र का एक शांत जिफ देखा , और सोचा कि अगर हम एक और आधार छवि से शुरू करते हैं तो क्या होगा। इसलिए मैंने ऐसा करने के लिए एक कार्यक्रम लिखा।
यह इतना अच्छा है कि मुझे लगा कि इसे चुनौती के रूप में करना मजेदार होगा।
कार्य
आप एक चौकोर छवि के साथ एक किनारे की लंबाई लेंगे जो 2 की शक्ति (4 से अधिक) है।
इस छवि को बनाने के लिए आपको अपनी छवि को समान आकार के 4 ऊर्ध्वाधर बैंडों में विभाजित करके शुरू करना चाहिए और आसन्न बैंडों को छवि के आकार के एक 8 वें विपरीत दिशाओं में स्थानांतरित करना चाहिए (स्थानांतरित बैंड दूसरी तरफ चारों ओर लपेटना चाहिए)। फिर आपको हर बार इस प्रक्रिया को दोहराते हुए छवि को दो बार कई विभाजनों में विभाजित करना चाहिए और पिछली बार की तुलना में आधे से अधिक स्थानांतरित करना चाहिए। प्रत्येक पुनरावृत्ति को आपको ऊर्ध्वाधर और क्षैतिज पारियों के बीच वैकल्पिक करना चाहिए। आपको तब तक पुनरावृत्त होना चाहिए जब तक कि शिफ्ट के लिए आपको एक भिन्न संख्या में पिक्सेल (यह हमेशा 1/2 होगा) द्वारा शिफ्ट करने की आवश्यकता होती है, जिस बिंदु पर आप किए जाते हैं।
बाईं ओर (शून्य-अनुक्रमित) से लंबवत विषम संख्याओं को शिफ्ट करते समय शिफ्ट करते समय भी नीचे की ओर जाना चाहिए। जब ऊपर से क्षैतिज रूप से विषम संख्या वाले बैंड को शिफ्ट किया जाए तो बाएं को शिफ्ट होना चाहिए जबकि गिने हुए बैंड को दाएं शिफ्ट करना चाहिए।
आपको केवल आउटपुट की आवश्यकता है / परिवर्तन के अंतिम परिणाम को प्रदर्शित करें, जीआईएफ की तरह सभी मध्यवर्ती चरणों को नहीं।
यह कोड-गोल्फ है इसलिए लक्ष्य बाइट्स में मापे गए स्रोत कोड की लंबाई को कम करना है।
उदाहरण के माध्यम से काम किया
मैं पृष्ठ फ़्रेम के शीर्ष पर दिखाए गए कैट गिफ़ के माध्यम से फ़्रेम द्वारा काम करूंगा।
यहाँ प्रारंभिक छवि है:
यह छवि 512 से 512 पिक्सेल है। हम प्रत्येक बैंड को 1/8 छवि आकार (64 पिक्सेल) को लंबवत रूप से शुरू करने और स्थानांतरित करने के लिए 4 बैंड में तोड़ देंगे।
अब हम इसे कई बैंड (8 बैंड) से दो बार में विभाजित करेंगे और पिछली बार (32 पिक्सल) के मुकाबले इसे आधा स्थानांतरित कर देंगे। इस बार हम क्षैतिज रूप से बदलाव करेंगे।
अब हम लंबवत रूप से इस बार 16 बैंडों में बंटेंगे और प्रत्येक बैंड को 16 पिक्सेल से स्थानांतरित करेंगे।
32 बैंड, 8 पिक्सेल, क्षैतिज पारी
64 बैंड, 4 पिक्सेल, ऊर्ध्वाधर पारी।
128 बैंड, 2 पिक्सल, क्षैतिज पारी।
256 बैंड, 1 पिक्सेल, ऊर्ध्वाधर पारी।
चूंकि अगली पाली में हमें प्रत्येक बैंड को आधा पिक्सेल से स्थानांतरित करने की आवश्यकता होगी, हम इस बिंदु पर रुकेंगे और परिणाम को आउटपुट करेंगे।
परीक्षण के मामलों
मेरे पास एक काम करने वाली स्क्रिप्ट है जो इन छवियों को बना सकती है इसलिए मैंने सोचा कि मैं आप लोगों को परीक्षण मामलों के लिए छवियां चुनने दूंगा। इसलिए यदि आपके पास एक चौकोर छवि है जो कि 2 चौड़ी की शक्ति है जिसे आप ड्रैगनफाइंड होते देखना चाहते हैं। इसे मुझे भेजने के लिए स्वतंत्र महसूस करें और मैं इसे एक परीक्षण मामला बनाऊंगा।
आपको एक सादे सफेद या ठोस काले रंग की छवि पर भी परीक्षण करना चाहिए ताकि आप यह निर्धारित कर सकें कि पिक्सल गायब हो रहे हैं या नहीं।
**Start** by shifting one 8th of the size of the image
तो repeat ... each time splitting the image into twice as many divisions and shifting half as far as the previous time
पहली बार 1/8, दूसरा 1/16 होगा। तीसरा 1/32 जब तक पिक्सेल की संख्या आंशिक है। मैं नहीं देखता कि इस बारे में क्या अस्पष्ट है।