सीजाम ( 58 56 वर्ण)
कुछ अक्षर अनपेक्षित हैं, और एक टैब है जिसे StackExchange सॉफ़्टवेयर द्वारा मंगवाया जाएगा:
"¶3¬î¿Á· 7ÛÈmÈÚÚ¡"256b454b212f-{__W%.*A<1b+}qi*-4=
ऑनलाइन डेमो । यह लगभग तीन सेकंड में n = 400 के लिए ऑनलाइन चलेगा।
इनकोडिंग xxd
:
0000000: 22b6 0233 93ac eebf c1b7 0609 3794 dbc8 "..3........7...
0000010: 6dc8 1015 dada a122 3235 3662 3435 3462 m......"256b454b
0000020: 3231 3266 2d7b 5f5f 5725 2e2a 413c 3162 212f-{__W%.*A<1b
0000030: 2b7d 7169 2a2d 343d +}qi*-4=
व्याख्या
मोबीस सीढ़ी मूल रूप से दो अतिरिक्त किनारों वाली सीढ़ी है। एक सीढ़ी पर एक प्रतिबंधित जंगल को देखते हुए, इसे मोबियस सीढ़ी पर 1 से 4 प्रतिबंधित जंगलों के बीच उठाया जा सकता है। किनारों को प्रदान किया जा सकता है, जो डिग्री 3 या एक चक्र का शीर्ष नहीं बनाता है। चार कोनों की डिग्री और उनके अंतर्संबंध, सीढ़ी पर प्रतिबंधित वन के 116 वर्ग बनाते हैं, हालांकि उनमें से कुछ आयत के समरूपता के कारण समान हैं। मैंने लंबाई n + 1 में से किसी एक के लिए लंबाई की सीढ़ी के विस्तार का विश्लेषण करने के लिए एक कार्यक्रम लिखा था, और फिर कक्षाओं को 26 समकक्ष कक्षाओं में विलय कर दिया। यह एक बंद रूप देता है
⎡⎣⎢⎢⎢1111⎤⎦⎥⎥⎥टी⎡⎣⎢⎢⎢1120223021410110⎤⎦⎥⎥⎥एन - 2⎡⎣⎢⎢⎢0100⎤⎦⎥⎥⎥+
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢221111122⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥टी⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢210001030100001020112100120100010011101100010110000020100000010110001140100011122⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥एन - 2⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢002200000⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥+
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1244113222344⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥टी⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢0001001000000021001011000200200002000031004001002000011000001000100100000000010003002002000001000010000200101000000110002001001000101020000012100101101000220010010200004⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥एन - 2⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1011201000121⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
इसलिए तीन रेखीय पुनरावृत्तियां लेकर और फिर उन्हें जोड़कर मूल्यों की तेजी से गणना की जा सकती है, लेकिन यह बहुत ही गंभीर नहीं है।
हालाँकि, यदि हम विभिन्न चारित्रिक बहुपद के अपरिमेय कारक लेते हैं और प्रत्येक को एक से गुणा करते हैं (गुणन को अनदेखा करते हुए) तो हमें 10 डिग्री का बहुपद मिलता है जो एक कार्यशील एकल रेखीय पुनरावृत्ति देता है।
रचनात्मक दृष्टिकोण (58 वर्ण)
qi:Q2*,Wa*e!{Wa/{_W%e<}%$}%_&{{,1>},2few:~{:-z(Q(%}%0-!},,
ऑनलाइन डेमो । यह n=2
समस्याओं के बिना और n=3
थोड़े धैर्य के साथ ऑनलाइन चलेगा । इसके लिए n=1
क्रैश हो जाता है, लेकिन चूंकि ओपी ने उस मामले को आवश्यकताओं से बाहर करने के लिए चुना है, इसलिए यह मौलिक समस्या नहीं है।
विच्छेदन
qi:Q e# Take input from stdin, parse to int, store in Q
2*,Wa*e! e# Take all permutations of (0, -1, 1, -1, 2, -1, ..., -1, 2*Q-1)
{ e# Map to canonical form...
Wa/ e# Split around the -1s
{_W%e<}% e# Reverse paths where necessary to get a canonical form
$ e# Sort paths
}%
_& e# Filter to distinct path sets
{ e# Filter to path sets with valid paths:
{,1>}, e# Ignore paths with fewer than two elements (can't be invalid; break 2ew)
2few:~ e# Break paths into their edges
{:-z(Q(%}% e# The difference between the endpoints of an edge should be +/-1 or Q (mod 2Q)
e# So their absolute values should be 1, Q, 2Q-1.
e# d => (abs(d)-1) % (Q-1) maps those differences, and no other possible ones, to 0
e# NB {:-zQ(%}% to map them all to 1 would save a byte, but wouldn't work for Q=2
0-! e# Test that all values obtained are 0
},
, e# Count the filtered distinct path sets
एक अधिक कुशल संस्करण 98 बाइट्स लेता है:
qi2*:Q{a{__0=[1Q2/Q(]f+Qf%_&1$-\f{+E}~}:E~}/]{_W%>!},:MW=0{_{M\f{__3$_@&@:e<@|^{=}{^j}?}1b}{,)}?}j
ऑनलाइन डेमो
यह गहराई-पहले खोज के द्वारा संभावित रास्तों का निर्माण करता है, फिर एक संस्मरणित फ़ंक्शन का उपयोग करता है जो किसी दिए गए सेट के लिए संभव प्रतिबंधित जंगलों की गणना करता है। फ़ंक्शन इस आधार पर पुनरावर्ती रूप से कार्य करता है कि किसी दिए गए गैर-खाली सेट के लिए किसी भी प्रतिबंधित वन में एक पथ होता है जिसमें सबसे छोटा शीर्ष और एक प्रतिबंधित फ़ॉरेस्ट होता है जो उस पथ में नहीं है।
34, 241, 1582, 10204, 65197, 415076, 2638366, 16759249, 106427154, 675771276, 4290678337
:। मुझे यकीन नहीं है कि1
आउटपुट के साथ इनपुट की भी आवश्यकता क्यों नहीं है2
।