एक सड़क एक नदी को कितने तरीकों से पार कर सकती है?


13

एक सीधे नदी और एक सड़क है कि नदी के उस पार चला जाता है कल्पना कीजिए n पुलों के माध्यम से कई बार। सड़क अपने आप से लूप नहीं करती है और असीम रूप से लंबी है। इस सड़क को एक खुला मैदान माना जाएगा। एक खुला मेयर एक खुला वक्र होता है, जो खुद को प्रतिच्छेद नहीं करता है और दोनों सिरों पर असीम रूप से फैलता है, जो एक पंक्ति n बार को काटता है ।

एक वैध मेयर को पूरी तरह से चौराहे के बिंदुओं के क्रम से वर्णित किया जा सकता है जो इसे दौरा करता है।

N चौराहों के साथ चौराहे के अलग-अलग पैटर्न की संख्या एक nnd meandric संख्या हो सकती है । उदाहरण के लिए, n = 4:

इस क्रम की पहली कुछ संख्याएँ हैं:

1, 1, 1, 2, 3, 8, 14, 42, 81, 262, 538, 1828, 3926, 13820, 30694, 110954...

यह OEIS अनुक्रम A005316 है

चुनौती

एक प्रोग्राम / फ़ंक्शन लिखें जो इनपुट के रूप में एक सकारात्मक पूर्णांक n लेता है और nth मेन्ड्रिक संख्या प्रिंट करता है ।

विशेष विवरण

  • मानक I / O नियम लागू होते हैं।
  • मानक खामियों को मना किया जाता है
  • आपका समाधान या तो 0-अनुक्रमित या 1-अनुक्रमित हो सकता है लेकिन कृपया निर्दिष्ट करें कि कौन सा।
  • यह चुनौती सभी भाषाओं में सबसे छोटा दृष्टिकोण खोजने के बारे में नहीं है, बल्कि, यह प्रत्येक भाषा में सबसे छोटा दृष्टिकोण खोजने के बारे में है
  • आपका कोड बाइट्स में स्कोर किया जाएगा , आमतौर पर एन्कोडिंग UTF-8 में, जब तक कि अन्यथा निर्दिष्ट न हो।
  • इस क्रम की गणना करने वाले अंतर्निहित कार्यों की अनुमति है, लेकिन एक समाधान जिसमें अंतर्निहित पर भरोसा नहीं करता है, को प्रोत्साहित किया जाता है।
  • स्पष्टीकरण, यहां तक ​​कि "व्यावहारिक" भाषाओं के लिए भी प्रोत्साहित किया जाता है

परीक्षण के मामलों

ये 0-अनुक्रमित हैं। ध्यान दें कि यदि आपकी भाषा डिफ़ॉल्ट रूप से नहीं हो सकती है तो आपको इस नंबर को संभालने की आवश्यकता नहीं है।

Input      Output

1          1
2          1
11         1828
14         30694
21         73424650
24         1649008456
31         5969806669034

कुछ बेहतर प्रारूपों में:

1 2 11 14 21 24 31
1, 2, 11, 14, 21, 24, 31

1
आप एक मेयर को एक बंद वक्र के रूप में परिभाषित करते हैं, लेकिन आपके पास जो OEIS अनुक्रम है, वह खुले घुमाव द्वारा मेन्डर्स के लिए है। क्या आपके बजाय A005315 का मतलब था ?
पेड़ नहीं

7
यह प्रोजेक्ट-यूलर लेवल है ...
J42161217

1
@Notatree ओह, इस दिन का मेरा बड़ा पेंच है ... इसकी तलाश थी। ठीक कर देंगे, मुझे बताने के लिए धन्यवाद!
जुबान 21:17


1
एक और अधिक वक्रोक्ति (क्षमा करें ...): एक खुले वक्र को एंडपॉइंट्स की अनुमति है, लेकिन मुझे लगता है कि एक खुले मेयर को दोनों छोरों पर अनंत तक विस्तार करना होगा। (यदि समापन बिंदुओं की अनुमति है, तो आपके पास वक्र हो सकते हैं जो चीजें करते हैं जैसे कि मेन्ड्रिक संख्या बड़ी होगी।)
नहीं पेड़ एक

जवाबों:


11

पायथन 3 , 208 188 187 184 180 177 171 बाइट्स

lambda n:sum(all(i-j&1or(x<a<y)==(x<b<y)for(i,(a,b)),(j,(x,y))in d(enumerate(map(sorted,zip((0,)+p,p+(n,)))),2))for p in d(range(n)))
from itertools import*;d=permutations

इसे ऑनलाइन आज़माएं!

अब 1-अनुक्रमित (पहले 0-अनुक्रमित था लेकिन 1-इंडेक्सिंग ने मेन्डर्स के व्यवहार के बारे में एक भाग्यशाली क्विक के कारण एक बाइट को बचाया)।

व्याख्या

यह जेनी_मैथी द्वारा पोस्ट किए गए लिंक के समान हो सकता है , लेकिन मैंने पेपर पढ़ना समाप्त नहीं किया, इसलिए यह मेरे तरीके के पीछे का तर्क है।

मैं परिणामों की कल्पना करने के लिए OEIS पर दिए गए निम्नलिखित चित्रण का उपयोग करूंगा ।

यहाँ छवि विवरण दर्ज करें

प्रत्येक वैध मेयर को पूरी तरह से चौराहे के बिंदुओं के क्रम से वर्णित किया जा सकता है जो यह दौरा करता है। यह छवि में तुच्छ रूप से देखा जा सकता है; प्रवेश खंड हमेशा एक ही तरफ होता है (अन्यथा संख्या दोगुनी होगी)। हम एंट्री और एग्जिट सेगमेंट दोनों की प्रवृत्ति का प्रतिनिधित्व उनके संबंधित अनन्तताओं तक कर सकते हैं, बस हर ऑर्डर को दोनों तरफ एक बिंदु जोड़कर - यही कहना है, ऑर्डर (2, 1, 0)बन जाएगा (-1, 2, 1, 0, 3)

इसे ध्यान में रखते हुए, कार्य सीमा के क्रम, या क्रमपरिवर्तन की संख्या का पता लगाना है n, जो स्वयं के साथ प्रतिच्छेद नहीं करते हैं। अंतर्क्रियाएं केवल बिंदुओं के जोड़े के बीच का एक मुद्दा है जिसके लिए कनेक्टिंग सेगमेंट एक ही पक्ष पर है। क्रमपरिवर्तन में किसी भी दो जोड़े के लिए एक अंक जिसका खंड एक पक्ष साझा करता है, चाहे या नहीं, वे एक दूसरे के जोड़े के दो तत्वों के बीच है या नहीं, केवल एक जोड़ी के बिंदुओं के बराबर है या नहीं। इस प्रकार, हम यह निर्धारित कर सकते हैं कि क्या कोई आदेश द्वारा मान्य है या नहीं, एक जोड़ी के साथ एक जोड़ी नहीं है जो एक ही पक्ष के साथ एक खंड के साथ है।

अंत में, प्रत्येक क्रमपरिवर्तन की वैधता निर्धारित करने के बाद, फ़ंक्शन का आउटपुट मान्य होने वाले क्रमपरिवर्तन की संख्या के नीचे आ जाता है।


1
क्या आपने पहले से ही एक संयोजन वर्ग के लिए ऐसा किया है? या आप सिर्फ FGITW असाधारण रूप से कठिन थे?
मैजिक ऑक्टोपस Urn

2
@MagicOctopusUrn ईमानदारी से, मैं इसके बारे में दो घंटे के लिए अपने सिर को कोस रहा हूं - इसलिए मुझे बाद का अनुमान है।
नॉटजैगन

यदि आप प्रश्न में आपके कुछ स्पष्टीकरण का उपयोग करते हैं तो क्या आप बुरा मानेंगे? 'क्योंकि वर्तमान में मेरी व्याख्या ... महान नहीं है ... महान है।
आलिशान

1
@totallyhuman कुछ भी उपयोग करने के लिए स्वतंत्र महसूस करें जो उपयोगी लगता है, हालांकि मुझे लगता है कि यह बहुत ज्यादा नहीं है क्योंकि विशेष रूप से मेरी पद्धति के लिए बहुत कुछ विशिष्ट है।
notjagan

5

हास्केल , 199 बाइट्स

1!x=x
-1!(-1:x)=1:x
n!(i:x)=i:(n-i)!x
0#([],[])=1
0#_=0
n#(a,b)=sum$((n-1)#)<$>(-1:a,-1:b):[(a,-i:b)|i:a<-[a]]++[(-j:a,b)|j:b<-[b]]++[(j!a,i!b)|i:a<-[a],j:b<-[b],i+j>=0]
f n=n#([],[-1,1])+n#([1],[1])

इसे ऑनलाइन आज़माएं!

इवान जेन्सेन में विचारों के विस्तार के आधार पर, प्लेन मेन्डर्स की गणना , 1999 के खुले मेन्डर्स के मामले में। यह TIO पर लगभग 20 सेकंड में n = 1,…, 16 से चलता है ।


क्या आपने arxiv.org/abs/cond-mat/0008178 देखा है ?
पीटर टेलर

@PeterTaylor मैंने नहीं किया था। यह उसी पेपर के एक नए संस्करण की तरह दिखता है, खुले मेन्डर्स से निपटने के लिए एक रणनीति के साथ अद्यतन किया गया है जो शायद मेरी रणनीति की तुलना में समझाने में आसान है, लेकिन इसके लिए कोड में कई और विशेष मामलों की आवश्यकता होती है।
एंडर्स केसरग

0

एपीएल (डायलॉग क्लासिक) , 127 115 बाइट्स

⊃⊃⌽{↓⍉(⊃,/c),∘(+/)⌸(≢¨c←{1↓¨⍳¨⍨0,¨((×2↑¯1⌽⍵)/¯1 1⌽¨⊂⍵),(⊂∊#⍵#),(××/m,≠/m)/⊂1↓¯1↓(⊢-⍵×~)⍵∊m2↑¯1⌽⍵}¨⊃⍵)/⊃⌽⍵}⍣⎕⌽1,⊂⍳2

इसे ऑनलाइन आज़माएं!


यह कैसे काम करता है?
lirtosiast

@lirtosiast मूल रूप से यह है लेकिन एन्कोडिंग लूप मिलान पूर्णांक आईडी के बजाय
0/1 के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.