सर्पिल क्रमचय अनुक्रम


17

हम एक आयताकार सर्पिल में प्राकृतिक संख्या को रोल कर सकते हैं:

 17--16--15--14--13
  |               |
 18   5---4---3  12
  |   |       |   |
 19   6   1---2  11
  |   |           |
 20   7---8---9--10
  |
 21--22--23--24--25

लेकिन अब जब हमने उन्हें एक आयताकार ग्रिड पर रखा है, तो हम सर्पिल को एक अलग क्रम में खोल सकते हैं, जैसे घड़ी की दिशा में, उत्तर से शुरू होकर:

 17  16--15--14--13
  |   |           |
 18   5   4---3  12
  |   |   |   |   |
 19   6   1   2  11
  |   |       |   |
 20   7---8---9  10
  |               |
 21--22--23--24--25

परिणामी अनुक्रम स्पष्ट रूप से प्राकृतिक संख्याओं का क्रमचय है:

1, 4, 3, 2, 9, 8, 7, 6, 5, 16, 15, 14, 13, 12, 11, 10, 25, 24, 23, 22, 21, 20, 19, 18, 17, ...

आपका कार्य इस क्रम की गणना करना है। ( OEIS A020703 , लेकिन स्पॉइलर चेतावनी: इसमें एक और दिलचस्प परिभाषा और कई सूत्र शामिल हैं जिन्हें आप स्वयं समझ सकते हैं।)

मज़ेदार तथ्य: सभी 8 संभावित अवांछित आदेशों की अपनी OEIS प्रविष्टि है।

चुनौती

एक सकारात्मक पूर्णांक को देखते हुए n, nउपरोक्त अनुक्रम के वें तत्व को वापस करें ।

आप STDIN (या निकटतम विकल्प), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट लेने और STDOUT (या निकटतम वैकल्पिक), फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) पैरामीटर के माध्यम से परिणाम आउटपुट कर सकते हैं।

मानक नियम लागू होते हैं।

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

1       1
2       4
3       3
4       2
5       9
6       8
7       7
8       6
9       5
100     82
111     111
633     669
1000    986
5000    4942
9802    10000
10000   9802

पूरी सूची के लिए और n = 11131 OEIS पर b-file देखें

जवाबों:


6

जेली, 11 10 बाइट्स

’ƽð²+ḷ‘Ḥ_

मेरे फोन पर एक और जेली जवाब।

’ƽð²+ḷ‘Ḥ_   A monadic hook:
’ƽ          Helper link. Input: n
’             n-1
 ƽ            Atop integer square root. Call this m.
   ð         Start a new dyadic link. Inputs: m, n
    ²+ḷ‘Ḥ_    Main link:
    ²+ḷ       Square m, add it to itself,
       ‘      and add one.
        Ḥ     Double the result
         _    and subtract n.

इसे यहाँ आज़माएँ ।


जेली के साथ शुरू करने पर कोई सुझाव? मैं यह नहीं बता सकता कि कांटे / कांटे कैसे पार हो जाते हैं।
लिन

पहले एपीएल या जे जानें। चेन वास्तव में ट्रेनों की तुलना में आसान हैं क्योंकि सभी कार्यों में निश्चितता है।
20

समझा। हाँ, मुझे जे अनुभव है। मुझे लगता है कि मैं पढ़ने की कोशिश करूंगा jelly.pyऔर यह पता लगाऊंगा कि कौन सी चेन सपोर्ट करती है।
लिन

2
कैसे आप अपने फोन पर टाइप किया ?! यह कोड की तुलना में अधिक प्रभावशाली है!
DJMcMayhem

8

जाप, 20 19 16 बाइट्स

V=U¬c)²-V *2-U+2

इसे ऑनलाइन टेस्ट करें!

उस अवलोकन के आधार पर

F (N) = Ceil (N ^ .5) * (Ceil (N ^ .5) -1) - N + 2

या, बल्कि, वह

एफ (एन) = एन से अधिक या उसके बराबर का पहला वर्ग, इसकी वर्गमूल घटा, शून्य से अधिक, प्लस 2।

मुझे नहीं पता कि यह स्पष्टीकरण OEIS पृष्ठ पर है, क्योंकि मैंने अभी तक इसे नहीं देखा है।


5

जूलिया, 28 बाइट्स

n->2((m=isqrt(n-1))^2+m+1)-n

यह एक लंबोदर फ़ंक्शन है जो पूर्णांक को स्वीकार करता है और पूर्णांक देता है। इसे कॉल करने के लिए, इसे किसी वैरिएबल पर असाइन करें।

हम परिभाषित मीटर ऐसी है कि पूर्णांक सबसे बड़ा होने के लिए मीटर 2n के पूर्णांक वर्गमूल -1, यानी एन -1 ( isqrt)। इसके बाद हम OEIS अभिव्यक्ति 2 ( m + 1) m - n + 2 को सरलता से 2 ( m 2 + m + 1) - n कर सकते हैं

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


4

CJam, 14 बाइट्स

qi_(mQ7Ybb2*\-

एलेक्स के दृष्टिकोण का उपयोग करना: 2*(m^2+m+1)-nजहां m = isqrt(n-1)


2

ईएस 7, 31 28 26 बाइट्स

n=>(m=--n**.5|0)*++m*2-~-n

मैंने स्वतंत्र रूप से एलेक्स के सूत्र की खोज की थी, लेकिन मैं इसे साबित नहीं कर सकता क्योंकि मैं उस समय कंप्यूटर के पास नहीं था।

संपादित करें: सहेजे गए 3 बाइट आंशिक रूप से @ETHproductions के लिए धन्यवाद। एक और 2 बाइट्स बचाए।


n=>((m=--n**.5|0)+m*m)*2-n+1मुझे लगता है कि काम करेगा।
ETHproductions

@ETHproductions धन्यवाद, मैं खुद को आश्चर्यचकित कर रहा था कि --nवहां कैसे पहुंचा जाए ...
नील

@ETHproductions हे, मैं आपके जवाब से 2 बाइट शेव करने में कामयाब रहा।
नील


1

MATL , 16 13 बाइट्स

qX^Y[tQ*Q2*G-

लिन के सीजेम जवाब के आधार पर ।

इसे ऑनलाइन आज़माएं! (भाषा में बदलाव के अनुसारY[बदल दिया गया हैk)

q       % input n. Subtract 1
X^      % square root
Y[      % floor
tQ      % duplicate and add 1
*       % multiply
Q       % add 1
2*      % multiply by 2
G-      % subtract n

यह अन्य उत्तरों ( 16 बाइट्स ) की तुलना में एक अलग दृष्टिकोण का उपयोग करता है :

6Y3iQG2\+YLt!G=)

यह स्पष्ट रूप से दो सर्पिल मैट्रिक्स (वास्तव में, लंबवत रूप से फ़्लिप किए गए संस्करण उत्पन्न करता है, लेकिन यह आउटपुट को प्रभावित नहीं करता है)। पहले वाला है

17    16    15    14    13
18     5     4     3    12
19     6     1     2    11
20     7     8     9    10
21    22    23    24    25

और दूसरा एक संशोधित पथ का पता लगाता है:

25    10    11    12    13
24     9     2     3    14
23     8     1     4    15
22     7     6     5    16
21    20    19    18    17

nअनुक्रम की -th संख्या ज्ञात करने के लिए nयह दूसरी मैट्रिक्स में खोजने और पहले में संबंधित संख्या को चुनने के लिए पर्याप्त है । मेट्रिसेस को काफी बड़ा nहोना चाहिए ताकि यह दिखाई दे, और इसमें विषम आकार होना चाहिए ताकि मूल (संख्या 1) दोनों में एक ही स्थिति में हो।

इसे भी ऑनलाइन आज़माएं ! (6Y3भाषा में परिवर्तन के अनुसार स्थानांतरित कर दिया गया है)

6Y3      % 'spiral' string
i        % input n
QG2\+    % round up to an odd number large enough
YL       % generate spiral matrix of that size: first matrix
t!       % duplicate and transpose: second matrix
G=       % logical index that locates n in the second matrix
)        % use that index into first matrix

0

ब्रेकीलॉग , 20 बाइट्स

-1$r$[I*I+I+1=*2-?=.

यह उसी तकनीक का उपयोग करता है जो अन्य सभी उत्तरों की तुलना में बहुत अधिक है।

व्याख्या

-1                   § Build the expression Input - 1
  $r                 § Square root of Input - 1
    $[I              § Unify I with the floor of this square root
       *I+I+1        § Build the expression I * I + I + 1
             =*2-?   § Evaluate the previous expression (say, M) and build the expression
                     § M * 2 - Input
                  =. § Unify the output with the evaluation of M * 2 - Input

इस उत्तर के बारे में एक मध्य दिलचस्प तथ्य यह है कि यह =कोष्ठक के बजाय उपयोग में आसान और छोटा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.