Sierpinski त्रिकोण को आकर्षित करने के लिए मौत के लिए किया गया है । हालांकि अन्य दिलचस्प चीजें हैं जो हम इसके साथ कर सकते हैं। यदि हम त्रिभुज पर काफी कठोर हैं, तो हम उल्टे त्रिकोणों को भग्न ग्राफ के नोड्स के रूप में देख सकते हैं। चलो उस ग्राफ के चारों ओर अपना रास्ता खोजें!
सबसे पहले, आइए प्रत्येक नोड को एक नंबर असाइन करें। सबसे बड़ा उल्टा त्रिभुज नोड शून्य होगा, और फिर हम केवल परत (चौड़ाई-पहले) से परत नीचे जाते हैं, क्रम शीर्ष-बाएं-दाएं में लगातार संख्या निर्दिष्ट करते हैं:
बड़े संस्करण के लिए क्लिक करें जहां छोटी संख्या थोड़ी कम धुंधली है।
(बेशक, इस पद्धति नीला त्रिकोण के अंदर अनंत तक जारी है।) नंबरिंग परिभाषित करने के लिए एक और तरीका है केंद्र नोड सूचकांक है कि 0
, और नोड के बच्चों i
(अगली छोटे पैमाने के आसन्न त्रिकोण) सूचकांक होते हैं 3i+1
, 3i+2
और 3i+3
।
हम इस ग्राफ में कैसे घूमेंगे? छह प्राकृतिक कदम हैं जो किसी भी त्रिकोण से ले सकते हैं:
- एक हमेशा वर्तमान नोड के तीन बच्चों में से एक के किनारों के मध्य बिंदु के माध्यम से आगे बढ़ सकता है। हम इन चालों को निर्दिष्ट करेंगे
N
,SW
औरSE
। उदाहरण के लिए अगर हम नोड पर वर्तमान में कर रहे हैं2
, इन नोड्स तक ले जाएगा7
,8
,9
, क्रमशः। किनारों के माध्यम से अन्य चालें (अप्रत्यक्ष वंशजों के लिए) अस्वीकृत हैं। - कोई भी तीन कोनों में से एक के माध्यम से आगे बढ़ सकता है, बशर्ते कि वह सीधे माता-पिता या दो अप्रत्यक्ष पूर्वजों में से एक, त्रिकोण के किनारे को न छुए। हम इन चालों को निर्दिष्ट करेंगे
S
,NE
औरNW
। उदाहरण के लिए अगर हम नोड पर वर्तमान में कर रहे हैं31
,S
नेतृत्व करने के लिए होता है10
,NE
अमान्य हो सकता है औरNW
करने के लिए नेतृत्व करेंगे0
।
चुनौती
दो गैर नकारात्मक पूर्णांक को देखते हुए x
और y
, से कम से कम पथ को खोजने x
के लिए y
केवल छह चाल ऊपर वर्णित का उपयोग कर,। यदि कई छोटे रास्ते हैं, तो उनमें से किसी एक को आउटपुट करें।
ध्यान दें कि आपका कोड उपरोक्त आरेख में दर्शाए गए केवल 5 स्तरों से अधिक के लिए काम करना चाहिए। आप ऐसा मान सकते हैं x, y < 1743392200
। यह सुनिश्चित करता है कि वे 32-बिट हस्ताक्षरित पूर्णांक के अंदर फिट हों। ध्यान दें कि यह पेड़ के 20 स्तरों से मेल खाती है।
आपके कोड को 5 सेकंड से कम समय में किसी भी मान्य इनपुट को संसाधित करना होगा । हालांकि यह एक क्रूर बल चौड़ाई-प्रथम खोज का नियम है, यह एक काफी ढीली बाधा होनी चाहिए - मेरा संदर्भ कार्यान्वयन गहराई 1000 के लिए मनमाने ढंग से इनपुट को सेकंड में संभालता है (यह नोड्स के लिए ~ 480-अंकीय संख्या है)।
आप STDIN (या निकटतम विकल्प), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट लेने और STDOUT (या निकटतम वैकल्पिक), फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) पैरामीटर के माध्यम से परिणाम आउटपुट कर सकते हैं, एक प्रोग्राम या फ़ंक्शन लिख सकते हैं।
उत्पादन एक फ्लैट, तार की स्पष्ट सूची होना चाहिए N
, S
, NE
, NW
, SE
, SW
, (रिक्त स्थान, linefeeds, अल्पविराम, किसी भी उचित विभाजक का उपयोग कर ","
...)।
मानक कोड-गोल्फ नियम लागू होते हैं।
परीक्षण के मामलों
पहले कुछ परीक्षण मामलों को ऊपर दिए गए आरेख का उपयोग करके हाथ से किया जा सकता है। दूसरे सुनिश्चित करते हैं कि उत्तर पर्याप्त रूप से कुशल हों। उन लोगों के लिए, समान लंबाई के अन्य समाधान हो सकते हैं जो सूचीबद्ध नहीं हैं।
0 40 => N N N N
66 67 => S SW N N N
30 2 => NW NW -or- NE SW
93 2 => NE SW
120 61 => NW NW NW NW N SE SW N
1493682877 0 => S S NW NW
0 368460408 => SW SW N N SW SW SE SW SW N SE N N SW SW N SE SE
1371432130 1242824 => NW NW NE NW N SE SW SW SW SE SE SW N N N N SW
520174 1675046339 => NE NW NE NE SE SE SW SW N SE N SW N SW SE N N N N SE SE SW SW
312602548 940907702 => NE NW S SW N N SW SE SE SE SW SE N N SW SE SE SE SW
1238153746 1371016873 => NE NE NE SE N N SW N N SW N SE SE SW N SW N N SE N SE N
547211529 1386725128 => S S S NE NW N N SE N SW N SE SW SE SW N SE SE N SE SW SW N
1162261466 1743392199 => NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE