वेतन वृद्धि को दोगुना करते हुए ऊपर और नीचे की गिनती


14

इनपुट:

एक गैर-खाली सूची / वेक्टर प्रत्येक तत्व का एक मूल्य / चरित्र रखती है, अगर आप की गणना करेंगे संकेत ऊपर या नीचे । मैं उपयोग करूँगा 1और -1, लेकिन आप जो चाहें चुन सकते हैं। आप केवल दो मानों का उपयोग कर सकते हैं, तो आप उपयोग नहीं कर सकते 1,2,3...और -1,-2,-3...ऊपर के लिए और क्रमशः नीचे,।

चुनौती:

आप ज्यामितीय श्रृंखला 1, 2, 4, 8, 16, 32 ... में संख्याओं का उपयोग करेंगे । हर बार जब आप ऊपर या नीचे गिनना शुरू करते हैं, तो आप 1 , फिर 2 , फिर 4 और इसी तरह के वेतन वृद्धि में गिनती करेंगे । यदि आप बदलते हैं और दूसरी तरह से गिनना शुरू करते हैं तो आप 1 , फिर 2 , फिर 4 और इसी तरह घटाएँगे। आउटपुट अंत में आपको मिलने वाली संख्या होगी।

उदाहरण:

नीचे दिए गए उदाहरण में, पहली पंक्ति इनपुट है, दूसरी पंक्ति वह संख्या है जिसे आप ऊपर / नीचे गिन रहे हैं, तीसरी पंक्ति संचयी योग है, और अंतिम पंक्ति आउटपुट है।

उदाहरण 1:

1   1   1   1   1   1   1   1   1   1   
1   2   4   8   16  32  64  128 256 512 
1   3   7   15  31  63  127 255 511 1023
1023

उदाहरण 2:

1   1   1   1   1   1   -1  -1  -1  -1  1   1   1
1   2   4   8   16  32  -1  -2  -4  -8  1   2   4
1   3   7   15  31  63  62  60  56  48  49  51  55
55

जैसा कि आप देख सकते हैं, पहला 1या -1"मान" सेट कर रहे हैं, जो कि हम गिनती कर रहे हैं, और मूल्य के लगातार अनुक्रम का मतलब है 1या -1दोगुना है।

उदाहरण 3:

-1  -1  1   1   -1  -1  -1
-1  -2  1   2   -1  -2  -4
-1  -3  -2  0   -1  -3  -7
-7

कुछ संभावित कोने के मामलों के लिए कुछ अतिरिक्त परीक्षण मामले।

इनपुट पहली पंक्ति पर है। आउटपुट दूसरे पर है।

1
1
-------    
-1
-1
-------
-1   1  -1   1  -1   1  -1   1  -1   1  -1   1
0

यह इसलिए प्रत्येक भाषा में सबसे कम सबमिशन जीतता है।

जवाबों:



6

MATL , 6 बाइट्स

Y'Wq*s

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

व्याख्या

इनपुट पर विचार करें [1 1 1 1 1 1 -1 -1 -1 -1 1 1 1]

     % Implicit input
     % STACK: [1 1 1 1 1 1 -1 -1 -1 -1 1 1 1]
Y'   % Run-length encoding
     % STACK: [1 -1 1], [6 4 3]
W    % Exponentiation with base 2, element-wise
     % STACK: [1 -1 1], [64 16 8]
q    % Subtract 1
     % STACK: [1 -1 1], [63 15 7]
*    % Multiply, element-wise
     % STACK: [63 -15 7]
s    % sum of array
     % STACK: 55
     % Implicit display

6

जाप , 8 6 बाइट्स

-2 बाइट्स @ETHproductions की बदौलत

ò¦ xì2

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

व्याख्या

निहित इनपुट: [1, 1, 1, -1, -1, -1, -1, 1, 1]

ò¦

विभाजन इनपुट सरणी ( ò) विभिन्न ( ¦) तत्वों के बीच :
[[1, 1, 1], [-1, -1, -1, -1], [1, 1]]

ì2

प्रत्येक विभाजन को आधार- 2अंकों की एक सरणी के रूप में पार्स किया गया है ì:[7, -15, 3]

x

xपरिणामी सरणी का योग ( ) प्राप्त करें :-5


अच्छी तकनीक है। मेरा मानना है कि आप बदल सकते हैं ®ì2Ãxकरने के लिए xì2दो बाइट्स को बचाने के लिए।
ETHproductions

@ETHproductions यार, तुम मेरे सभी पदों पर रहे हो। एक बार फिर धन्यवाद!
जस्टिन मेरिनर

5

क्यूबिक्स , 65 बाइट्स

W(?\q.p)w.;0.w;/0>I!U-unP(nwUs;q\^q:;^!u?P(w!u+w.;;>2p!u/@Os..sr\

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

        W ( ? \
        q . p )
        w . ; 0
        . w ; /
0 > I ! U - u n P ( n w U s ; q
\ ^ q : ; ^ ! u ? P ( w ! u + w
. ; ; > 2 p ! u / @ O s . . s r
\ . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .

देखो इसे चलाते हैं

इसकी संक्षिप्त व्याख्या के रूप में:

  • प्रत्येक पूर्णांक (1 या -1) में पढ़ें और पिछले से तुलना करें। अगर:
    • उसी ने इसे एक काउंटर की शुरुआत के रूप में नीचे की ओर धकेल दिया
    • अन्यथा शीर्ष पर काउंटर लाएँ और इसे उचित रूप में बढ़ा / घटाएँ।
  • एक बार इनपुट समाप्त होने के बाद प्रत्येक काउंटर को शीर्ष पर लाएं और निगेटिव को हैंडल करते हुए 2 ^ काउंटर - 1 करें
  • परिणाम और आउटपुट का योग

4

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

a=>a.map(e=>r+=d=d*e>0?d+d:e,r=d=0)&&r

3

आर , 32 बाइट्स

sum((2^(R=rle(scan()))$l-1)*R$v)

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

यह कुछ अन्य लोगों के समान विधि है।

के इनपुट के साथ -1 -1 1 1 -1 -1 -1

  • इनपुट पर रन लंबाई एनकोडिंग करें। 2, 2, 3और मानों की लंबाई के साथ परिणाम-1, 1, -1
  • लंबाई की शक्ति 2 करें - 1. परिणाम 3, 3, 7
  • RLE मान देने से गुणा करें -3, 3, -7
  • राशि लौटाएं -7

3

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

-1 बाइट @ नॉटजगन को धन्यवाद

f=lambda a,*s,m=1:m*a+(s>()and f(*s,m=(m*2)**(a==s[0])))

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


इस या इस के साथ -1 बाइट ।
नॉटजैगन

वह s>()मुझे एक सेकंड में ले गया। यह वास्तव में स्मार्ट है।
मॉर्गन थ्रैप


2

सी ++ 14, 58 बाइट्स

[](auto v,int&s){int p=s=0;for(auto x:v)s+=p=x*p<1?x:2*p;}

vतर्क के माध्यम से इनपुट लेता है ( std::vectorया किसी भी चलने योग्य कंटेनर), sतर्क के लिए आउटपुट (संदर्भ द्वारा)। के प्रत्येक तत्व vचाहिए या तो 1या -1

उदाहरण उपयोग और परीक्षण के मामले।


2

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

ḅ⟨{ȧᵐ~ḃ}×h⟩ᵐ+

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

के _बजाय Brachylog का उपयोग करता है -

स्पष्टीकरण:

?ḅ⟨{ȧᵐ~ḃ}×h⟩ᵐ+. Predicate (implicit ?.)
?               The input
 ḅ              A list where its elements' elements are equal, and when concatenated is ?
            ᵐ   The result of mapping this predicate over ?
  ⟨        ⟩      The result of forking two predicates over ? with a third
   {    }           The result of this predicate on ?
     ᵐ                The result of mapping this predicate over ?
    ȧ                   The absolute value of ?
      ~               An input where the result of this predicate over it is ?
       ḃ                A list that represents the digits of ? in base I (default 2)
          h         An object that is the first element of ?
         ×          A number that is the product of ?
             +  A number that is the sum of ?
              . The output




1

CJam (13 बाइट्स)

{e`{(*2b}%1b}

ऑनलाइन टेस्ट सूट । यह एक अनाम ब्लॉक (फ़ंक्शन) है, जो स्टैक पर इन्टर्स की एक सरणी लेता है और स्टैक पर एक इंट छोड़ता है। अंतिम परीक्षण से पता चलता है कि यह एक खाली सरणी को सही ढंग से संभालता है, 0 देता है।

दृष्टिकोण सीधा रन-लंबाई एन्कोडिंग है जिसके बाद प्रत्येक रन और बेस रूपांतरण का मैनुअल रन-लेंथ डिकोड होता है। का उपयोग करते हुए निर्मित रन-लंबाई डिकोड के लिए मैं के साथ एक बाइट और अधिक प्राप्त {e`1/:e~2fb1b}या {e`{ae~2b}%1b}



1

हास्केल, 54 53 बाइट्स

k#(a:b:c)=k+last(b:[k*2|a==b])#(b:c)
k#_=k
(#)=<<head

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

एक साधारण पुनरावृत्ति जो या तो संचायक को दोगुना कर देती है kया इसे 1/ के लिए रीसेट कर देती है -1और प्रत्येक चरण के मानों को जोड़ देती है।


0

गणितज्ञ, 60 बाइट्स

Tr[Last@*Accumulate/@(#[[1]]2^(Range@Tr[1^#]-1)&/@Split@#)]&



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