अंकगणित चक्र


13

इनपुट:

पूर्णांक nजो >=0या >=1( f(0)वैकल्पिक है)

आउटपुट:

n'नीचे अनुक्रम, या करने के लिए अनुक्रम और सहित वें नंबर nवें नंबर'।

अनुक्रम:

(0),1,-1,-3,0,5,-1,-7,0,9,-1,-11,0,13,-1,-15,0,17,-1,-19,0,21,-1,-23,0,25,-1,-27,0,29,-1,-31,0,33,-1,-35,0,37,-1,-39,0,41,-1,-43,0,45,-1,-47,0,49,-1,-51,0,53,-1,-55,0,57,-1,-59,0,61,-1,-63,0,65,-1,-67,0,69,-1,-71,0,73,-1,-75,0,77,-1,-79,0,81,-1,-83,0,85,-1,-87,0,89,-1,-91,0,93,-1,-95,0,97,-1,-99

यह क्रम कैसे बनता है?

f(n=0) = 0(वैकल्पिक)
f(n=1) = f(0) + nया f(n=1) = 1
f(n=2) = f(1) - n
f(n=3) = f(2) * n
f(n=4) = f(3) / n
f(n=5) = f(4) + n
आदि

या छद्म कोड में:

function f(integer n){
  Integer result = 0
  Integer i = 1
  Loop as long as i is smaller than or equal to n
  {
    if i modulo-4 is 1:
      result = result plus i
    if i modulo-4 is 2 instead:
      result = result minus i
    if i modulo-4 is 3 instead:
      result = result multiplied with i
    if i modulo-4 is 0 instead:
      result = result integer/floor-divided with i
    i = i plus 1
  }
  return result
}

लेकिन जैसा कि आपने देखा है कि अनुक्रम में दो पैटर्न हैं:

0, ,-1,  ,0, ,-1,  ,0, ,-1,   ,0,  ,-1,   ,0,  ,-1,   ,...
 ,1,  ,-3, ,5,  ,-7, ,9,  ,-11, ,13,  ,-15, ,17,  ,-19,...

तो उसी क्रम में होने वाले किसी भी अन्य दृष्टिकोण निश्चित रूप से पूरी तरह से ठीक हैं।

चुनौती नियम:

  • 0-अनुक्रमित और 1-अनुक्रमित आदानों का परिणाम समान होगा (यही कारण है कि f(0)यदि आप इसे शामिल करना चाहते हैं तो 0-अनुक्रमित इनपुट के लिए वैकल्पिक है)।
  • आपको nइस क्रम के 'वें नंबर' को आउटपुट करने की अनुमति है । या पूरा क्रम ऊपर और n'वें नंबर सहित । (तो f(5)में या तो परिणाम कर सकते हैं 5या 0,1,-1,-3,0,5।)
    • यदि आप अनुक्रम को n'वें नंबर' तक शामिल करते हैं , तो आउटपुट स्वरूप लचीला होता है। एक सूची / सरणी, अल्पविराम / अंतरिक्ष / नई-पंक्ति सीमांकित स्ट्रिंग या मुद्रित किया जा सकता है, आदि।
  • डिवाइड ( /) पूर्णांक / फर्श विभाजन है, जो 0 की ओर घूमता है (नकारात्मक अनंतता की ओर नहीं है जैसा कि कुछ भाषाओं में है)।

सामान्य नियम:

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

ऊपर दिए गए अतिरिक्त परीक्षण मामले n=100:

Input     Output

1000      0
100000    0
123       -123
1234      -1
12345     12345
123456    0

1
मुझे यह oeis.org पर नहीं मिला, इसलिए आप इसे वहां जमा करना चाहते हैं। यह एक दिलचस्प अनुक्रम है, मुझे आश्चर्य है कि किसी ने भी इसे पंजीकृत नहीं किया है।
पाइप

1
@ यह बहुत मनमाना लगता है
q राइट

जवाबों:


20

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

n=>[0,n,-1,-n][n&3]

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

प्रमाण

मान लेते हैं कि हमारे पास कुछ n के कई 4 के लिए निम्नलिखित संबंध हैं। इन संबंधों को अनुक्रम की पहली शर्तों के लिए तुच्छ रूप से सत्यापित किया गया है।

f(n)   = 0
f(n+1) = n+1
f(n+2) = -1
f(n+3) = -(n+3)

और N = n + 4 दें । फिर, परिभाषा के अनुसार:

f(N)   = f(n+4) = f(n+3) // (n+4) = -(n+3) // (n+4) = 0
f(N+1) = f(n+5) = f(n+4) + (n+5)  = 0 + (n+5)       = N+1
f(N+2) = f(n+6) = f(n+5) - (n+6)  = (n+5) - (n+6)   = -1
f(N+3) = f(n+7) = f(n+6) * (n+7)  = -1 * (n+7)      = -(N+3)

जो गणितीय प्रेरण द्वारा साबित करता है कि संबंध किसी भी एन मल्टीपल 4 के लिए हैं


2
क्योंकि अधिकांश उत्तर इस समाधान के पोर्ट हैं, इसलिए मैं जोड़ना चाहता हूं कि मैंने सत्यापित किया है कि यह सिद्ध है।
आउटगॉल्फ


आह, नट, काम से विचलित हो गया जबकि कुछ इसी तरह काम कर रहा था। +1
झबरा

जिज्ञासा से बाहर, क्या "n & 4" को "n% 4" पर पसंद करना एक कारण है?
IanF1

2
@ IanF1 मुझे लगता है कि यह केवल एक निम्न-स्तरीय प्रोग्रामिंग आदत है (एक बिटवाइज़ को समझना और असेंबली में एक मॉडुलो की गणना की तुलना में आसान और तेज़ है)। लेकिन यह यहाँ बहुत मायने नहीं रखता है और मैं वास्तव में इसे n%4बाद में बदलने के लिए आधा लुभावना था ताकि यह 32-बिट से बड़ी संख्या के साथ काम करे।
अरनुलद

4

05AB1E , 8 बाइट्स

nthसंख्या को आउटपुट करता है

ÎD(®s)sè

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

05AB1E , 14 बाइट्स

अनुक्रम में पैटर्न का उपयोग करके एन तक की संख्या की सूची को आउटपुट करता है

ÅÉāÉ·<*āÉ<‚øí˜

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

व्याख्या

N = 7 का उपयोग करके उदाहरण

ÅÉ               # List of odd numbers upto N
                 # STACK: [1,3,5,7]
  ā              # Enumerate 1-based
   É             # is odd?
                 # STACK: [1,3,5,7],[1,0,1,0]
    ·<           # double and decrement
                 # STACK: [1,3,5,7],[1,-1,1,-1]
      *          # multiply
                 # STACK: [1,-3,5,-7]
       āÉ<       # enumerate, isOdd, decrement
                 # STACK: [1,-3,5,-7],[0,-1,0,-1]
          ‚ø     # zip
                 # STACK: [[1, 0], [-3, -1], [5, 0], [-7, -1]]
            í    # reverse each
             ˜   # flatten
                 # RESULT: [0, 1, -1, -3, 0, 5, -1, -7]

4

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

पोर्ट ऑफ़ अरनल्ड का जवाब:

lambda n:[0,n,-1,-n][n%4]

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


Naive solution:

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

lambda n:n and eval('int(f(n-1)%sn)'%'/+-*'[n%4])

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


पायथन 2 , 78 77 76 58 57 53 52 बाइट्स

lambda n:n and eval('int(1.*f(n-1)%sn)'%'/+-*'[n%4])

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

बाइट्स का एक गुच्छा इस्तेमाल किया int, क्योंकि अजगर फर्श विभाजित करता है, और 0प्रश्न की तरह नहीं।


@KevinCruijssen हाँ, धन्यवाद :)
TFeld


3

टीआईएस -n 2 1 , 123 बाइट्स

के लिए nवें नंबर को आउटपुट करता है 0 <= n <= 999। (ऊपरी सीमा भाषा सीमाओं के कारण है)।

@0
MOV UP ACC
MOV ACC ANY
L:SUB 4
JGZ L
JEZ L
ADD 5
JRO -5
@1
MOV UP ACC
JRO UP
SUB ACC
JRO 3
MOV 1 ACC
NEG
MOV ACC ANY
HCF

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


टीआईएस -n 2 1 , 124 बाइट्स

के लिए nवें नंबर को आउटपुट करता है 0 <= n <= 999। (ऊपरी सीमा भाषा सीमाओं के कारण है)। कई nव्हाट्सएप द्वारा अलग-अलग प्रदान किए जा सकते हैं।

@0
MOV UP ACC
MOV ACC ANY
L:SUB 4
JGZ L
JEZ L
ADD 5
MOV ACC ANY
@1
MOV UP ACC
JRO UP
SUB ACC
JRO 3
MOV 1 ACC
NEG
MOV ACC ANY

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


टीआईएस -n 3 1 , 192 बाइट्स

के लिए मान आउटपुट 0..nके लिए 0 <= n <= 999। (ऊपरी सीमा भाषा सीमाओं के कारण है)।

@0
MOV UP ACC
ADD 1
MOV ACC ANY
JRO -1
@1
SUB UP
JLZ C
HCF
C:ADD UP
MOV ACC ANY
ADD 1
SWP
ADD 1
MOV ACC ANY
SUB 4
JEZ W
ADD 4
W:SWP
@2
MOV UP ACC
JRO UP
SUB ACC
JRO 3
MOV 1 ACC
NEG
MOV ACC ANY

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


सभी संख्यात्मक I / O ( -nध्वज) का उपयोग करते हैं। पहले दो समाधान दो कम्प्यूट नोड्स का उपयोग करते हैं, एक दूसरे के ऊपर स्थित है। तीसरे में तीन नोड्स का ढेर है।

पहले दो समाधानों के लिए, ऊपरी नोड इनपुट पढ़ता है, मूल संख्या को चालू करता है, फिर बार-बार 4 घटाता है जब तक कि हम नकारात्मक नहीं हो जाते हैं, तब हमारी जम्प टेबल के लिए 5 इंडेक्स जोड़ता है। इसके बराबर है (n % 4) + 1

तीसरा समाधान इस कार्य को दो नोड्स में विभाजित करता है; शीर्ष एक बस समय के अंत तक सीमा को दोहराता है, और मध्य नोड सूचकांक के समानांतर (उस सीमा के मुकाबले) और ऊपर की तरह मॉडुलो में गिना जाता है।

तीनों समाधानों का निचला नोड समान है; इसमें एक जंप टेबल है, और यह वह जगह है जहां जादू होता है। हम में मूल संख्या की दुकान ACCतो, JRO(शायद जम्मू UMP आर elative हे FFset) द्वारा आगे 1, 2, 3, या 4, पर क्या नोड ऊपर का कहना है निर्भर करता है।

पीछे की ओर काम करना:

  • 4होगा एक ) NEGखा लिया ACC, और ) के लिए कदम ACCउत्पादन के लिए नीचे।
  • 3में डाल दिया 1जाएगा ACC, फिर 4एक और 4बी कदम ।
  • 2सीधे कदम 4बी पर कूद जाएगा ।
  • 1होगा SUBपथ ACCही (प्रभावी रूप से शून्यीकरण को बंद ACC), तो कदम करना 2है, जो करने के लिए कूदता है 4

2

सी (जीसीसी) , 62 बाइट्स

f(n,k){k=~-n;n=n?n%4?k%4?n-2&3?f(k)*n:f(k)-n:f(k)+n:f(k)/n:0;}

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


आप अपने बाइट-काउंट (31 बाइट्स) को ओलिवियरग्रीगो के जावा उत्तर का एक पोर्ट बनाकर पूरी तरह से आधा कर सकते हैं : f(n){n=n%2>0?n*(2-n%4):n%4/-2;}मैं इसे दूसरे उत्तर के रूप में जोड़ूंगा , क्योंकि मुझे आपके पुनरावर्ती दृष्टिकोण भी पसंद हैं। :)
केविन क्रूज़सेन

@ केविनक्रूजसेन मैंने उनके जावा 10 समाधान को देखा और इसकी संक्षिप्तता पर ध्यान दिया, हालांकि मैं केवल उनके समाधान की प्रतिलिपि नहीं बनाना चाहता था, क्योंकि दो भाषा के अंकगणितीय वाक्यविन्यास भी समान हैं।
जोनाथन फ्रीच

1

जेली , 8 बाइट्स

,-;N;0⁸ị

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

-1 लिन को धन्यवाद ।

अन्य क्या कर रहे हैं (अरनॉल्ड के समाधान का बंदरगाह), समर्थन करता है 0

जेली , 17 बाइट्स

A:A}××Ṡ¥
R_×ç+4ƭ/

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

0 समर्थित नहीं है।



1

रेटिना , 46 बाइट्स

.+
*
r`(____)*$
_$.=
____
-
___.*
-1
__

_.*
0

इसे ऑनलाइन आज़माएं! स्पष्टीकरण:

.+
*

यूनीरी में बदलें।

r`(____)*$
_$.=

दशमलव में वापस कनवर्ट करें, लेकिन n%4+1रेखांकित करें।

____
-

इस मामले में कि 4 है, तो परिणाम है -n

___.*
-1

केस 3: -1

__

केस 2: n

_.*
0

मामला एक: 0



1

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

आउटगोल्फ की टिप्पणी के कारण एरिक के बड़े पैमाने पर 10 बाइट बच गए। धन्यवाद!

4∘|⊃0,⊢,¯1,-

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

Nth संख्या को आउटपुट करता है

मुझे एपीएल का पता नहीं है, मैंने अभी Dyalog APL में Arnauld के समाधान कार्य के अपने J पोर्ट को बनाने की कोशिश की।


2
अच्छा प्रयास! कुछ टिप्पणी: 1) आप के (0,⍵,¯1,-⍵)साथ बदल सकते हैं (0⍵¯1,-⍵)। 2) आप 1+यह मानकर हटा सकते हैं कि ⎕IOसिस्टम वेरिएबल को असाइन किया गया है 0(हां, इसकी अनुमति है)। 3) हम आम तौर पर f←कार्यों को प्रस्तुत करते समय भाग की गणना नहीं करते हैं । 4) आप इंडेक्सिंग के बजाय फ़ंक्शन का उपयोग कर सकते हैं []। ये सभी मिलकर इसे बनाते हैं: ⎕IO←0( {(4|⍵)⊃0⍵¯1,-⍵}
इसको मत गिनें

@ आउटरीगोल्फ धन्यवाद!
गैलेन इवानोव

2
इस दृष्टिकोण के आधार पर अधिक उन्नत गोल्फिंग 4∘|⊃0,⊢,¯1,-:।
एर्ग आउटफोलर

1
@ एग्री द आउटग्राफर - हां, वास्तव में! मुझे लगता है कि आपका 4∘|⊃0,⊢,¯1,- वही है जो मेरे जे समाधान 4&|{0,],_1,-एपीएल में दिखेगा। एक बार फिर धन्यवाद!
गैलन इवानोव

1
दरअसल, J एक APL वैरिएंट है, हालांकि अन्य अधिक APL जैसे Dyalog और NARS2000 की तुलना में अधिक दूर है।
आउटगोल्फर

1

क्यूबिक्स , 20 19 बाइट्स

Iun:^>s1ns:u@Ota3s0

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

क्यूबिक्स के लिए एक ही दृष्टिकोण बंदरगाहों।

एक घन पर:

    I u
    n :
^ > s 1 n s : u
@ O t a 3 s 0 .
    . .
    . .

पहला बिट ^Iu:n>s1ns:u0sस्टैक बनाता है और फिर 3atउचित आइटम को टीओएस में कॉपी करता है, फिर Oआउटपुट और @प्रोग्राम को समाप्त करता है।


0

व्हॉट्सएप, 84 83 बाइट्स

[S S S N
_Push_0][S N
S _Duplicate_0][T   T   S _Store][S S S T   S N
_Push_2][S S T  T   N
_Push_-1][T T   S _Store][S S S T   N
_Push_1][S N
S _Duplicate_1][T   N
T   T   _Read_STDIN_as_integer][S S S T T   N
_Push_3][S S S T    N
_Push_1][T  T   T   ][S S T T   N
_Push_-1][T S S N
_Multiply][T    T   S _Store][T T   T   _Retrieve_input][S S S T    S S N
_Push_4][T  S T T   _Modulo][T  T   T   _Retrieve_result][T N
S T _Print_as_integer]

पत्र S(स्थान), T(टैब), और N(नई-पंक्ति) केवल हाइलाइटिंग के रूप में जोड़े गए।
[..._some_action]केवल स्पष्टीकरण के रूप में जोड़ा गया।

इसे ऑनलाइन आज़माएँ (कच्चे स्थान, टैब और नई-नई लाइनों के साथ)।

पोर्ट @Arnauld के जावास्क्रिप्ट उत्तर

स्पष्टीकरण (उदाहरण इनपुट n=7):

Command   Explanation         Stack        Heap                  STDIN   STDOUT   STDERR

SSSN      Push 0              [0]
SNS       Duplicate top (0)   [0,0]
TTS       Store               []           {0:0}
SSSTSN    Push 2              [2]          {0:0}
SSTTN     Push -1             [2,-1]       {0:0}
TTS       Store               []           {0:0,2:-1}
SSSTN     Push 1              [1]          {0:0,2:-1}
SNS       Duplicate top (1)   [1,1]        {0:0,2:-1}
TNTT      Read STDIN as nr    [1]          {0:0,1:7,2:-1}        7
SSSTTN    Push 3              [1,3]        {0:0,1:7,2:-1}
SSSTN     Push 1              [1,3,1]      {0:0,1:7,2:-1}
TTT       Retrieve input      [1,3,7]      {0:0,1:7,2:-1}
SSTTN     Push -1             [1,3,7,-1]   {0:0,1:7,2:-1}
TSSN      Multiply (-1*7)     [1,3,-7]     {0:0,1:7,2:-1}
TTS       Store               [1]          {0:0,1:7,2:-1,3:-7}
TTT       Retrieve input      [7]          {0:0,1:7,2:-1,3:-7}
SSSTSSN   Push 4              [7,4]        {0:0,1:7,2:-1,3:-7}
TSST      Modulo (7%4)        [3]          {0:0,1:7,2:-1,3:-7}
TTT       Retrieve            [-7]         {0:0,1:7,2:-1,3:-7}
TNST      Print as integer    []           {0:0,1:7,2:-1,3:-7}           -7
                                                                                  error

त्रुटि के साथ रुकता है: बाहर निकलें परिभाषित नहीं।

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