मैंने हाल ही में ग्राफ सिद्धांत पर पढ़ा, विशेष रूप से हाइपरक्यूब्स और उन पर पथ के निर्माण के दिलचस्प तरीकों के बारे में सोचा। यहाँ मैं क्या लेकर आया हूँ।
आप जानते होंगे, आप से मिलकर सभी एन-tuples लेने के द्वारा एक n आयामी hypercube निर्माण कर सकते हैं 1
और 0
कोने के रूप में और कनेक्ट उन्हें, iff वे एक अंक में मतभेद है। यदि आप इन द्विआधारी अंकों को पूर्णांक संख्या के रूप में व्याख्या करते हैं, तो आप अच्छी तरह से संख्यात्मक अंक के साथ एक ग्राफ के साथ समाप्त होते हैं। उदाहरण के लिए n=3
:
मान लें कि आप इस हाइपरक्यूब पर चलना चाहते हैं और शीर्ष पर शुरू करना चाहते हैं 0
। अब, आप यह कैसे निर्धारित करते हैं कि आप किस शीर्ष पर जाना चाहते हैं? जिस नियम के साथ मैं आया हूं a
, आप जिस शीर्ष पर हैं, उसकी संख्या mod(a,n)
(शून्य-आधारित अनुक्रमणिका) फ्लिप करें और परिणामी शीर्ष पर जाएं। औपचारिक रूप से इस नियम को पुन: परिभाषित किया जा सकता है
a[m+1] = xor(a[m], 2^mod(a[m],n)).
इस नियम का पालन करके, आप हमेशा क्यूब पर रहेंगे और किनारों के साथ यात्रा करेंगे। परिणामी पथ इस तरह दिखता है
जैसा कि आप देख सकते हैं, आप एक सर्कल में चलेंगे! वास्तव में, सभी आयामों में और सभी शुरुआती बिंदुओं के लिए आपका मार्ग एक लूप में समाप्त हो जाएगा। उदाहरण के लिए n=14
और a[0]=0
यह इस तरह दिखता है
शौकीन चावला राजदूत के लिए, उसके नियोजित मार्ग की लंबाई काफी महत्वपूर्ण जानकारी है। तो, आपका काम एक फ़ंक्शन या एक प्रोग्राम लिखना है जो कि हाइपरक्यूब आयाम को इनपुट के रूप में n
एक प्रारंभिक शीर्ष पर ले a[0]
जाता है और परिणामी लूप में कोने की संख्या को आउटपुट करता है।
परीक्षण के मामलों
n a[0] Output
-----------------
3 0 6
14 0 50
5 6 8
17 3 346
नियम
- मानक खामियों को मना किया जाता है
- आउटपुट / इनपुट किसी भी उपयुक्त प्रारूप में हो सकता है
- आप
a[0]
एक मान्य शीर्ष मान सकते हैं
स्कोरिंग
बाइट्स में सबसे छोटा कोड जीतता है।
यदि आपके पास इस विषय पर कोई अतिरिक्त जानकारी है, तो मुझे सुनकर खुशी होगी!
a[m]
हाइपरक्यूब पर था, a[m+1]
तो भी होगा। और जैसा कि आप a[0]
एक मान्य शीर्ष मान सकते हैं , आपको किसी भी हाइपरक्यूब सामान की देखभाल करने की आवश्यकता नहीं है और बस नियम का पालन करें।
a[m+1] = xor(a[m], 2^mod(a[m],n))
, यह अप्रासंगिक है यदि कोने हाइपरक्यूब से संबंधित हैं, है ना?