हर लंबाई के चक्र के साथ एक फ़ंक्शन खोजें


11

किसी फ़ंक्शन को लंबाई n का एक चक्र कहा जाता है यदि उसके डोमेन में कोई x मौजूद है जैसे कि f n (x) = x और f m (x) for x के लिए 0 <m <n , जहां सुपरस्क्रिप्ट n को n निरूपित करता है - f का अनुप्रयोग । ध्यान दें कि लंबाई 1 का चक्र निश्चित बिंदु f (x) = x है

आपका कार्य पूर्णांक से स्वयं के लिए एक विशेषण फ़ंक्शन को लागू करना है, जिसमें हर सकारात्मक लंबाई n का एक चक्र होता है । एक विशेषण फ़ंक्शन एक-से-एक पत्राचार है, यानी हर पूर्णांक एक बार में एक बार मैप किया जाता है। लंबाई के ठीक एक चक्र के बाद एन का अर्थ है कि वास्तव में हैं कि n विशिष्ट संख्या x जिसके लिए n (x) = एक्स और मीटर (एक्स) ≠ एक्स के लिए 0 <मीटर <n

यहाँ इस तरह के एक समारोह x = 0 के आसपास की तरह लग सकता है का एक उदाहरण है :

x     ... -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6  7 ...
f(x)  ...  2  4  6 -3 -1  1 -4  0 -2  5  7 -7 -6  3 -5 ...

इस अंश में 1 से 5 की लंबाई के चक्र हैं :

n   cycle
1    0
2   -2  1
3   -4 -3 -1
4   -5  6  3  7
5   -7  2  5 -6  4
...

ध्यान दें कि ऊपर मैं केवल गणितीय अर्थों में "फ़ंक्शन" का उपयोग कर रहा हूं। आप अपनी पसंद की भाषा में एक फ़ंक्शन या पूर्ण कार्यक्रम लिख सकते हैं, जब तक कि यह एक एकल (हस्ताक्षरित) पूर्णांक को इनपुट के रूप में लेता है और एकल (हस्ताक्षरित) पूर्णांक देता है। हमेशा की तरह आप STDIN, कमांड लाइन तर्क, फ़ंक्शन तर्क आदि और आउटपुट STDOUT, फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) तर्क आदि के माध्यम से ले सकते हैं।

बेशक, कई भाषाएं (आसानी से) मनमाने ढंग से सटीक पूर्णांक का समर्थन नहीं करती हैं। यह ठीक है यदि आपका कार्यान्वयन केवल आपकी भाषा के मूल पूर्णांक प्रकार की सीमा पर काम करता है, जब तक कि वह कम से कम सीमा [-127, 127] को कवर करता है और यह कि यह मध्यस्थ के पूर्णांक के लिए काम करेगा यदि भाषा के पूर्णांक प्रकार को मनमाने ढंग से प्रतिस्थापित किया गया था सटीक पूर्णांक।

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


2
बारीकी से संबंधित। जबकि अंतर मामूली लगता है, वे कहते हैं कि पुराने तरीकों में से कोई भी महत्वपूर्ण संशोधन के बिना काम नहीं करता है, और विशेष रूप से मुझे नहीं लगता कि उस चुनौती से जीतने के दृष्टिकोण को बिल्कुल भी अनुकूलित किया जा सकता है।
मार्टिन एंडर

"हर लंबाई का ठीक एक चक्र होता है", "कई चक्रों की लंबाई होती है": क्या यह एकमात्र अंतर है जो अन्य से दूर को भेदता है?
अब्रीराम

@ Agawa001 यह एक अंतर है, दूसरा यह है कि दूसरी चुनौती सकारात्मक पूर्णांकों पर कार्यों के बारे में है, जबकि यह चुनौती सभी पूर्णांकों पर एक फ़ंक्शन के लिए पूछती है।
मार्टिन एंडर

1
मुझे लगता है कि चक्र की आपकी परिभाषा में यह शामिल करने की आवश्यकता है कि n न्यूनतम है। अन्यथा, लंबाई 2 का आपका चक्र आपकी लंबाई 4 और 6 के चक्र के रूप में भी गिना जाता है।
xnor

@xnor वूप्स, अच्छी बात है।
मार्टिन एंडर

जवाबों:


2

पायथ, 27 18 बाइट्स

_h?gQ0^2Q*.5@,Q-xh

स्पष्टीकरण ( Qइनपुट इनपुट पूर्णांक के लिए प्रारंभिक ):

_                       negative of (
                          (
  ?gQ0                      if Q >= 0:
      ^2Q                     2**Q
                            else:
         *.5                  half of
            @        Q          element Q (modulo list length) in
             ,                    the two element list [
              Q                     Q,
                 hQ                 ((Q plus 1)
                x  Q                 XOR Q)
               -    Q               minus Q
                                  ]
 h                        ) plus 1
                        )

यह चक्र है

((1)
(0, −2)
(1, −3,
(4 ) (2, −5, −7, )6)
(3, −9, −13,
( 11, −8) (4, -) 17, ,25, ,21, −15,
( 10) (5, ,33, −49, −41, ,
29, ,19, )12) (6, −65, −97, −81, −57, −37, ,
23, )14) (7, ,129, ,193, −161, 1113, ,73, ,73, ,45, ,27, )16)
(8, −257, −385, −321, −225 , -145, -89, -53, -31, -18)
(9, -513, -769, -641, -449, -289, -177, -105, -61, -35, -20)

लंबाई n का चक्र किसके द्वारा दिया गया है

( n - 2,
−2 ^ ( n - 2) 11 - 1, 22
^ ( n - 3) −3 - 1,
−2 ^ ( n - 4) ⋅5 - 1,
…,
^2 - 2 N (2 · n - 7) - 1,
⋅2 ^ 1 2 (2 · n - 5) - 1,
⋅2 ^ 0− (2 · n - 3) - 1)।

प्रत्येक पूर्णांक k inte appears1 ( k + 2) के पहले तत्व के रूप में प्रकट होता है । प्रत्येक पूर्णांक के लिए कश्मीर <-1, हम विशिष्ट लिख सकते हैं 1 - कश्मीर = 2 ^ मैं ⋅ (2⋅ j + 1) कुछ के लिए मैं , जे ≥ 0; तब k ( j + 2) वें तत्व ( i + j + 2) के चक्र के रूप में प्रकट होता है ।


5

MATL , 47 बाइट्स

E|G0<-QXJ:tQ*2/0hStJ<f0))Q2MQ)&:J6M-)2/ttk>Eq*k

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

सामान्य व्याख्या

नीचे दिया गया फंक्शन 2 वही है जो संबंधित चुनौती के लिए @ Sp3000 के उत्तर में इस्तेमाल किया गया है । नोटिंग के लिए @ Agawa001 को धन्यवाद।

समारोह तीन की संरचना है:

  1. Z ( Bigers ) से N ( Bials) तक की आपत्ति ।
  2. से द्विभाजन एन करने के लिए एन वांछित विशेषता (प्रत्येक की लंबाई के एक चक्र) के साथ।
  3. फ़ंक्शन का व्युत्क्रम 1।

कार्य 1 और 3 का उपयोग किया जाता है क्योंकि यह Z की तुलना में N में वांछित व्यवहार को प्राप्त करने के लिए आसान (मुझे लगता है) है ।

फ़ंक्शन 2 इस प्रकार है: ऊपरी रेखा डोमेन है, निचली रेखा कोडोमैन है। Commas का उपयोग स्पष्टता के लिए किया जाता है:

1,  2  3,  4  5  6,  7  8  9  10  ...
1,  3  2,  6  4  5, 10  7  8   9  ...

(ऊपरी से पहले खंड 1कम करने के लिए 1) लंबाई 1. दूसरा (से का एक चक्र है 2 3करने के लिए 3 2) की लंबाई 2, आदि का एक चक्र प्रत्येक ब्लॉक में, निचले हिस्से (समारोह की छवि) ऊपरी भाग चक्राकार स्थानांतरित कर दिया है है दाईं ओर एक कदम।

समारोह 1 इस प्रकार है:

 -5  -4  -3  -2  -1   0  +1  +2  +3  +4  ...
+10  +8  +6  +4  +2  +1  +3  +5  +7  +9  ...

फंक्शन 3 दो लाइनों की अदला-बदली वाले 1 के समान है।

उदाहरण

की छवि 3है -5। पहले समारोह 1 3से मैप किया 7जाता है; फिर फ़ंक्शन 2 7से मैप किया 10जाता है; फिर 10फ़ंक्शन 3 द्वारा -5` को मैप किया जाता है।

लंबाई -1 चक्र है 0। लंबाई -2 चक्र है -1 1। लंबाई -3 चक्र है -3 2 -2, आदि।

कोड समझाया गया

कार्य 1 और 3 सीधे हैं।

फंक्शन 2 संबंधित इनपुट ब्लॉक के निचले छोर को ढूंढकर काम करता है। उदाहरण के लिए, यदि इस फ़ंक्शन का इनपुट है तो 9यह पाया जाता है 7(ऊपर ब्लॉक देखें)। यह ऊपरी समापन बिंदु को चुनता है, जो 10उदाहरण में है। ब्लॉक की परिपत्र पारी MATL के 1-आधारित, मॉड्यूलर इंडेक्सिंग के लिए धन्यवाद प्राप्त की जाती है।

         % FUNCTION 1
         % Implicit input
E|       % Multiply by two. Absolute value
G0<      % 1 if input is negative, 0 otherwise
-        % Subtract
Q        % Add 1
XJ       % Copy to clipboard J. Used as input to the next function

         % FUNCTION 2
:        % Range [1 2 ... J], where J denotes the input to this function
tQ*      % Duplicate, increment by 1, multiply
2/       % Divide by 2
0hS      % Prepend a 0. This is needed in case J is 0
tJ<f     % Duplicate. Find indices that are less than the input J
0)       % Pick the last index.
)        % Apply as index to obtain input value that ends previous block
Q        % Add 1: start of current block
2M       % Push the two arguments to second-to-last function call
Q)       % Add 1 and use as index: end of current block
&:       % Inclusive binary range: generate input block 
J        % Push J (input to function 2)
6M-      % Subtract start of block
)        % Apply as index (1-based, modular). This realizes the shifting

         % FUNCTION 3
2/       % Divide by 2
ttk>     % Duplicate. 1 if decimal part is not 0; 0 otherwise
Eq       % Multiply by 2, add 1
*        % Multiply
k        % Round down
         % Implicit display

यह sp3000 s फंक्शन का ट्विस्ट है?
अब्रीराम

@ Agawa001 ओह यह है? मैंने दूसरी चुनौती नहीं देखी। मैं एक नज़र
डालूँगा

ओह। यह निश्चित रूप से है। कम से कम यह स्पष्ट करता है कि मेरा तर्क, यदि मूल नहीं है, तो सही था :-)
लुइस मेंडू

यह आश्चर्य की बात है कि करीबी विचारों को बाहर करने के लिए एक से अधिक दिमागों को कैसे करीब से देखा जाता है।
अब्रीराम

4

पायथन 2, 55 बाइट्स

g=lambda n,k=1:n/k and~g(~n+k*(n>0),k+1)+k*(n>0)or-~n%k

59 बाइट्स:

g=lambda n,k=1:n<0and~g(~n,2)or n/k and k+g(n-k,k+2)or-~n%k

चक्र बनाता है

[0]
[-1, -2]
[1, 2, 3]
[-3, -4, -5, -6]
[4, 5, 6, 7, 8]
...

पहले की चुनौती पर मेरे समाधान से संशोधित , जिसे Sp3000 के निर्माण से संशोधित किया गया है ।

कार्यक्रम

g=lambda n,k=1:n/k and k+g(n-k,k+2)or-~n%k

गैर-ऋणात्मक संख्याओं के विषम आकार के चक्र बनाता है

[0]
[1, 2, 3]
[4, 5, 6, 7, 8]
...

सही चक्र आकार को खोजने के लिए k, इनपुट nको k=1,3,5,7,...तब तक शिफ्ट करें जब तक कि परिणाम अंतराल में न हो [0,k)। ऑपरेशन के साथ इस अंतराल को साइकिल करें n->(n+1)%k, फिर इनपुट पर किए गए सभी घटाव को पूर्ववत करें। इसे पुनरावर्ती रूप से लागू किया जाता है k+g(n-k,k+2)

अब, हम भी चक्र बनाने के लिए नकारात्मक की जरूरत है। नोट हम संशोधित करता है, तो उस gके साथ शुरू करने के लिए k=2में g, हम भी आकार के चक्र प्राप्त होता

[0, 1]
[2, 3, 4, 5]
[6, 7, 8, 9, 10, 11]
...

ये बिट-सप्लीमेंट के माध्यम से नकारात्मक के आधार पर ~। इसलिए, जब nनकारात्मक है, हम बस के g(n)रूप में मूल्यांकन करते हैं ~g(~n,2)


मुझे नहीं पता कि यह मदद करता है, लेकिन गणना का एक और तरीका kलगता है Math.floor(Math.sqrt(n))*2+1
नील

@ नील मैं सीमा और चक्र के आकार को अंकगणितीय रूप से और यहां तक ​​कि पूरे कम्प्यूटेशन को निर्धारित करने पर ध्यान देता था, लेकिन पायथन में ये भाव लंबे होते हैं और मैंने पुनरावृत्ति को छोटा पाया।
xnor

3

पायथन 3, 110 बाइट्स

मुझे अभी तक यह पता नहीं चला है कि वहाँ एक मेमना कैसे मिलता है

यदि n एक त्रिभुज संख्या है [1,3,6,10,15,21,28, आदि ...] तो f (n) सूची में क्रम को ऋणात्मक से गुणा किया जाता है। यदि संख्या नकारात्मक है, तो इसे 1 + अगला सबसे छोटा त्रिभुज संख्या दें। और, वेतन वृद्धि।

उदाहरण: 5 एक त्रिकोण संख्या नहीं है, इसलिए 1 जोड़ें।

अगला पुनरावृत्ति, हमारे पास 6. 6 एक त्रिकोण संख्या है, और यह सूची में 3 है, इसलिए बाहर -3 आता है।

कार्यक्रम इन सूचियों देता है

लंबाई 1: [0]

लंबाई 2: [1, -1]

लंबाई 3: [2,3, -2]

लंबाई 4: [4,5,6, -3]

लंबाई 5: [7,8,9,10, -4]

x=int(input())
if x<0:print((x**2+x)/2+1)
else:
 a=((8*x+1)**.5-1)/2
 if a%1:print(x+1)
 else:print(-a)

संपादित करें: अतिरिक्त चार्जर्स को हटाने के लिए @TuukkaX को फिर से धन्यवाद।


1
आप को बदल सकता है 0.5करने के लिए .5और input('')करने के लिए input()
यति

2

पायथन 3, 146 बाइट्स

0 से अधिक हर संख्या के लिए, यहां तक ​​कि लूप्स (लेन 2,4,6,8 ...) हैं, और 0 से कम, विषम छोरों (1,3,5,7) हैं। 0 से 0 तक के नक्शे।

(-3, -2, -1), (0), (1,2), (3,4,5,6)

के लिए नक्शे

(-2, -1, -3), (0), (2,1), (6,3,4,5)

f=lambda x:1+2*int(abs(x)**.5)if x<1 else 2*int(x**.5+.5)
x=int(input());n=f(x)
if x>0:b=n*(n-2)/4
else:b=-((n+1)/2)**2
print(b+1+(x-b-2)%n)

संपादित करें: @TuukkaX ने पिछले समाधान से 8 बाइट्स निकाले। और दूसरा ३।


1
मुझे लगता है कि आप पहली पंक्ति में स्टेटमेंट से पहले एक व्हाट्सएप निकाल सकते हैं। और miकुछ छोटे में बदला जा सकता है, जैसे कि b
यति

यहाँ एक ही कार्यक्रम नीचे रखा गया है:f=lambda x:1+2*int(abs(x)**0.5)if x<1 else 2*int(x**0.5+0.5) x=int(input()) n=f(x) if x>0:b=n*(n-2)/4 else:b=-((n+1)/2)**2 print(b+1+(x-b-2)%n)
Yytsi

1
धन्यवाद, @TuukkaX मैं 2 चरित्र चर 'मील' के बारे में भूल गया।
मैजेंटा

1
मैं भी बदल input('')गया input()। जब हम केवल इनपुट प्राप्त करना चाहते हैं तो उद्धरण कुछ भी नहीं हैं क्योंकि हमें कंसोल को कुछ भी प्रिंट नहीं करना है।
यति

1
और भी छोटा। डॉट्स से पहले शून्य हटा दिया। f=lambda x:1+2*int(abs(x)**.5)if x<1 else 2*int(x**.5+.5) x=int(input());n=f(x) if x>0:b=n*(n-2)/4 else:b=-((n+1)/2)**2 print(b+1+(x-b-2)%n)
यति

2

मैटलैब (423)

function u=f(n),if(~n)u=n;else,x=abs(n);y=factor(x);for o=1:nnz(y),e=prod(nchoosek(y,o)',1);a=log(x)./log(e);b=find(a-fix(a)<exp(-9),1);if ~isempty(b),k=e(b);l=fix(a(b));break;end;end,if(abs(n)==1)k=2;l=0;end,if(k==2)l=l+1;x=x*2;end,e=dec2base(l,k)-48;o=xor(e,circshift(e,[0 1]));g=~o(end);if(~o|nnz(o==1)~=numel(e)-g),u=n*k;else,if((-1)^g==sign(n)),u=sign(n)*k^(base2dec([e(2:end-1) 1]+48,k)-(k==2));else,u=n*k;end,end,end
  • गैर-प्रतिस्पर्धा क्योंकि यह पिछली रैंकिंग के लिए अनुकूल होने का एक अच्छा रिकॉर्ड तोड़ता है, जबकि मैं इसे जितना संभव हो उतना छोटा करने के लिए संघर्ष कर रहा हूं।

  • मैटलैब में सटीकता के संबंध में कुछ निरर्थक बग्स जिन्हें मैं अपने कोड को व्यंग्यात्मक रूप से बड़ा बनाने के अलावा किसी भी तरह से नहीं ढूंढ सकता था, दूसरी ओर मैं जिस मैपिंग का विकल्प चुनता था वह प्राइम फेसर्स और एन-एरी लॉगरिथम के संदर्भ में था।

क्रियान्वयन

 f(2)

 1

 f(1)

 2

 f(-2)

 -4

 f(-4)

 -8

 f(-8)

 -1

 f(0)

 0



 ----------------------------

व्याख्या

  • पहले से पता है कि किसी भी संख्या को N=e1^x1*e2^x2...इस आधार से होने वाले अपराधों के प्रतिपादकों के उत्पाद के रूप में लिखा जा सकता है, मैंने उन चक्रों की छवियों को चुना Cजो सबसे छोटे कारक (सबसे जरूरी नहीं कि प्रधान) के सबसे बड़े घातांक से निकाली गई हैं जो कि N एक पूर्ण शक्ति है ।

  • सरल शब्दों में, N=P^xजहां P सबसे छोटी सही जड़ है, xचक्र के लिए दो आवश्यक शब्दों को दर्शाता है:, x=Ʃ(r*P^i)एक पद Pचक्र का आधार है और साथ ही मुख्य संख्या N के लिए एक सही मूल है, और kचक्र की डिग्री है C=p^k, जहां i1 और k के बीच भिन्न होता है, गुणांक 1 से बढ़ rजाता है और P-1 द्वारा किसी भी पूर्व-छवि के लिए बाध्य होता है जब तक कि सभी गुणांक r = 1 पर सेट नहीं हो जाते हैं, इसलिए हम उस चक्र की शुरुआत में चले जाते हैं।

  • चक्रों के बीच टकराव से बचने के लिए उनके उत्पादों के बजाय अपराधों के प्रतिपादक की पसंद सटीक है, क्योंकि दो चक्रों के उदाहरणों 3और 2उनके बीच एक मुलाक़ात का उदाहरण हो सकता है 3*2, इसलिए चक्र से परिभाषित होने के बाद से ही इसे टाला जाता है। आधार, और मीटपॉइंट के लिए आधार 6और डिग्री 1 का एक और चक्र है ।

  • नकारात्मक संख्याएं एक अपवाद रखती हैं, जैसा कि इसके लिए, मैंने नकारात्मक संख्याओं के लिए विषम डिग्री आरक्षित की, और बाकी के लिए भी डिग्री। ऐसा कैसे ?

    एक चक्र के भीतर एम्बेडेड किसी भी संख्या एन के लिए , के P^kरूप में लिखा गया है P^(a0*P^i0+a1*P^i1+...), राशि (a0*P^i0+a1*P^i1+...)को पी-आर्य आधार में रूपांतरित किया जाता है a0,a1,...., इस बिंदु को स्पष्ट करने के लिए कि (पी = 2) अनुक्रम बाइनरी बेस में होना चाहिए। के रूप में सकारात्मक / नकारात्मक डिग्री और (+/- 1) अपवाद की हालत की स्थापना के बिना prealably जाना जाता है, एक नंबर एन डिग्री का एक चक्र के किनारों पर है kयदि और केवल यदि अनुक्रम Aके रूप में लिखा गया है 1111..{k+1}..10या 111..{k}..1, सभी ठिकानों के लिए अन्यथा कोई रोटेशन की आवश्यकता नहीं है, इस प्रकार संबंधित के लिए एक विषम / समान डिग्री के k/k'लिए नकारात्मक / सकारात्मक स्थिति निर्दिष्ट करना दोनों के लिए एक विषम अनुक्रम के रूप में लिखा गया है 101..{k}..100, एक समान क्रम में 101..{k'}..10क्रमशः नकारात्मक / सकारात्मक संख्या-चक्र की शुरुआत के किनारे के रूप में लिखा गया है ।

    उदाहरण:

    एक नंबर ले रहा है N=2^10, x=10=2^1+2^3, अनुक्रम एक प्रश्न के लिखित है A=1010, अनुक्रम के इस प्रकार धनात्मक संख्या चक्र है, जो की एक निश्चित बढ़त symptomizes C=2^3, तो अगली छवि है कि धार शुरुआत की है A=011जो 8, लेकिन , इस परिणाम standarizing द्वारा (+ / -) 1 अपवाद 2^10/2नक्शे को 8/2और पिछली छवि को घुमाया नहीं जाना चाहिए।

    एक नंबर ले रहा है N=-3^9, x=9=3^2, अनुक्रम एक प्रश्न के लिखित है A=100, अनुक्रम के इस प्रकार नकारात्मक संख्या चक्र है, जो की एक निश्चित बढ़त symptomizes C=3^1, तो अगली छवि है कि धार शुरुआत की है A=01जो 3, लेकिन, नकारात्मक / सकारात्मक को यह परिणाम अनुकूल करने के लिए हालत -3^9नक्शे -3

  • दंपति के लिए (-/+)1, मैंने इसे चक्र-आधारों की संख्या के भीतर घुसपैठ करने की परिकल्पना की 2, एक आड़ में कि चक्रीय समूहों का एक सामान्य अनुक्रम {2,4}{8,16,32,64}..दूसरे रूप में बना है {1,2}{4,8,16,32}.., यह पिछले तत्वों के किसी भी नुकसान को रोकता है, और किया गया ओपिनियन बस पॉपिंग के साथ शिफ्ट हो रहा है में एक नया तत्व


परिणाम:

चक्रीय संख्याओं की पहली उचित श्रेणियों को सत्यापित करने के लिए इस छोटे कोड-शीट को चलाना:

for (i=1:6) 
index=1;if(max(factor(i))>=5) index=0;end
for ind=0:index
j=f(((-1)^ind)*i); while(((-1)^ind)*i~=j)fprintf('%d ',j);j=f(j);end,fprintf('%d \n',(-1)^ind*i),pause,end,
end

यह इस परिणाम की ओर जाता है

 2 1 
 -2 -4 -8 -1 
 1 2 
 -4 -8 -1 -2 
 9 27 3 
 -9 -27 -81 -243 -729 -2187 -6561 -19683 -3 
 8 16 32 64 128 256 512 4 
 -8 -1 -2 -4 
 25 125 625 3125 5 
 36 216 1296 7776 46656 6 
 -36 -216 -1296 -7776 -46656 -279936 -1679616 -10077696 -60466176 -362797056 -2.176782e+009 -1.306069e+010 ??? Error using ==> factor at 27

अंतिम एक विभाजन-त्रुटि है लेकिन यह [-127,127] मानक हस्ताक्षरित-पूर्णांक श्रेणी में फिट बैठता है।


मैं इस तकनीक का उपयोग थोड़ी देर पहले खान के एक पुराने सी कार्यक्रम में हैश कार्यों को परिभाषित करने के लिए करता था, यह साफ काम करता है!
अब्राहम

0

जावास्क्रिप्ट (ईएस 6), 73 बाइट्स

f=(n,i=0,j=0,k=0,l=1,m=i<0?-i:~i)=>n-i?f(n,m,k++?j:i,k%=l,l+!k):++k-l?m:j

अनुक्रम खोजने के द्वारा काम करता है (0, -1, 1, -2, 2, -3, 3, ...) जब तक यह नहीं मिलता है n , चक्र की गिनती यह जाता है। iवर्तमान प्रविष्टि शामिल है; jवर्तमान चक्र की शुरुआत, चक्र के kभीतर सूचकांक , वर्तमान चक्र lकी लंबाई और mअनुक्रम में अगली प्रविष्टि शामिल है। एक बार जब हम पाते nहैं jतो हम ले लेते हैं अगर हम एक चक्र के अंत में हैं या mनहीं।

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