एक गणित समस्या में एक ऐरे को चालू करें


35

गैर-पूर्णांक की गैर-रिक्त सूची को देखते हुए, इसे अंकगणित समस्या के रूप में फिर से लिखने पर विचार करें:

  • +संख्याओं के जोड़े के बीच एक प्लस चिह्न ( ) डाला जाता है जो बाएं से दाएं बढ़ता है (सूची की शुरुआत से अंत तक उर्फ)।
  • एक माइनस साइन ( -) संख्याओं के जोड़े के बीच डाला जाता है जो बाएं से दाएं घटते हैं।
  • एक गुणन चिह्न ( *) समान संख्याओं के जोड़े के बीच डाला जाता है।

एक और तरीका कहा: कोई भी सबलिस्ट a,bबन जाता है a+bयदि a<b, a-bयदि a>b, और a*bयदि a==b

उदाहरण के लिए, सूची

[12, 0, 7, 7, 29, 10, 2, 2, 1]

अभिव्यक्ति बन जाएगा

12 - 0 + 7*7 + 29 - 10 - 2*2 - 1

जो मूल्यांकन करता है 75

एक प्रोग्राम या फ़ंक्शन लिखें जो इस तरह की सूची में लेता है और इसका मूल्यांकन करता है, मुद्रण या परिणाम लौटाता है।

  • परिचालन मामलों का आदेश। गुणा किसी भी जोड़ या घटाव से पहले किया जाना चाहिए।
  • यदि इनपुट सूची में एक नंबर है, तो वह होना चाहिए जो इसका मूल्यांकन करता है। जैसे [64]देना चाहिए 64
  • उपयोग की evalया execया इसी तरह के निर्माणों अनुमति दी है।

यहाँ कुछ अतिरिक्त उदाहरण दिए गए हैं:

[list]
expression
value

[0]
0
0

[1]
1
1

[78557] 
78557
78557

[0,0]
0*0
0

[1,1]
1*1
1

[2,2]
2*2
4

[0,1]
0+1
1

[1,0]
1-0
1

[1,2]
1+2
3

[2,1]
2-1
1

[15,4,4]
15-4*4
-1

[9,8,1]
9-8-1
0

[4,2,2,4]
4-2*2+4
4

[10,9,9,12]
10-9*9+12
-59

[1,1,2,2,3,3]
1*1+2*2+3*3
14

[5,5,4,4,3,3]
5*5-4*4-3*3
0

[3,1,4,1,5,9,2,6,5,3,5,9]
3-1+4-1+5+9-2+6-5-3+5+9
29

[7637,388,389,388,387,12,0,0,34,35,35,27,27,2]
7637-388+389-388-387-12-0*0+34+35*35-27*27-2
7379

बाइट्स में सबसे छोटा कोड जीतता है। टाईब्रेकर पहले जवाब है।


5
"परिचालन मामलों के आदेश" के बारे में यह स्पष्ट रूप से बताना अच्छा हो सकता है कि जोड़ और घटाव बाईं-सहयोगी हैं और उनकी समान प्राथमिकता है।
मार्टिन एंडर

जवाबों:


15

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

p=s='print-'
for x in input():s+='*+-'[cmp(x,p)]+`x`;p=x
exec s

निर्माण और evalअभिव्यक्ति स्ट्रिंग। अंकगणितीय प्रतीक को पिछले संख्या pकी वर्तमान एक से तुलना करके चुना जाता है x। वर्तमान संख्या के बाद प्रतीक जोड़ा जाता है।

पहला नंबर Sp3000 की चतुर चाल से संभाला जाता है। का प्रारंभिक मान pएक स्ट्रिंग पर सेट किया गया है, जो किसी भी संख्या से बड़ा है और इसलिए -पहले नंबर से पहले का कारण बनता है । लेकिन, sएक print-ही समय में इनिशियलाइज़ किया जाता है जिससे परिणाम शुरू होता है print--(शुरुआती बाइट्स के लिए 2 बाइट्स बचाने के लिए xsot का धन्यवाद print)।


मुझे लगता है कि आप printस्ट्रिंग में स्थानांतरित कर सकते हैं और execइसके बजाय उपयोग कर सकते हैं eval
xsot

13

पायथ, 31 26 19 17 16 15 बाइट्स

अभिव्यक्तियों का *मूल्यांकन ऑनलाइन नहीं होगा, लेकिन वे सैद्धांतिक रूप से काम करेंगे।

माल्टीसेन को 2 बाइट्स धन्यवाद।

vsm+@"*-+"._-~k

टेस्ट सूट (मूल्यांकन के साथ)।

अन्य मामले (मूल्यांकन के बिना)।

इतिहास

  • 31 बाइट्स: M+G@"*-+"->GH<GHv+sgMC,JsMQtJ\x60e
  • 26 बाइट्स: M+G@"*-+"->GH<GHv+sgVQtQ\x60e
  • 19 बाइट्स: vtssVm@"*-+"->Zd<~Z
  • 17 बाइट्स: vtssVm@"*-+"._-~Z
  • 16 बाइट्स: vssVm@"*-+"._-~k
  • 15 बाइट्स: vsm+@"*-+"._-~k

गुणन ऑनलाइन काम क्यों नहीं करेगा? यदि आप सुनिश्चित नहीं हैं कि यह काम करता है तो उत्तर देने से पहले थोड़ा और परीक्षण करना सबसे अच्छा हो सकता है।
केल्विन के शौक

क्योंकि सुरक्षा सामान (मूल्यांकन केवल +और -ऑनलाइन के लिए काम करता है )
लीक नु

@HelkaHomba मुझे अभी तक ऑफ़लाइन प्रयास करने का मौका नहीं मिला, लेकिन यह काम करना चाहिए। ऑनलाइन दुभाषिया --safeस्विच का उपयोग करता है , जो इसके evalसाथ बदल देता है ast.literal_eval
डेनिस

ठीक है पर्याप्त ठीक है।
केल्विन के शौक

पुष्टि की, यह ऑफ़लाइन दुभाषिया के साथ काम करता है।
डेनिस

12

जेली , 18 16 15 14 बाइट्स

I0;ð1g×⁹⁸œṗP€S

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

यह काम किस प्रकार करता है

I0;ð1g×⁹⁸œṗP€S  Main link. Input: A (list)

I               Increments; compute the deltas of all adjacent items of A.
 0;             Prepend a 0.
   ð            Begin a new, dyadic chain.
                Left argument: D (0 plus deltas). Right argument: A
    1g          Compute the GCD of 1 and each item in D.
                This yields 1 for non-negative items, -1 for negative ones.
      ×⁹        Multiply each 1 or -1 with the corresponding item of A.
                This negates every item in A that follows a - sign.
        ⁸œṗ     Partition the result by D. This splits at occurrences of non-zero
                values of D, grouping items with identical absolute value.
           P€   Take the product of each group.
             S  Sum; add the results.


1
अच्छी तरह से किया। मुझे पायथन evalको एक परमाणु के रूप में जोड़ना चाहिए ...
डेनिस

9
मैंने आपको बाहर से गुदगुदाया। : पी
डेनिस

अच्छी तरह से, अपनी बारी!
लीक

9

MATL , 12 बाइट्स

Y'^l6MdZSh*s

यह @ aditsu का बहुत अच्छा विचार है रन-लेंथ एन्कोडिंग के है।

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

व्याख्या

       % Take input vector implicitly
Y'     % RLE. Produces two vectors: values and lengths
^      % Rise each value to the number of consecutive times it appears. This
       % realizes the product of consecutive equal values
l      % Push 1
6M     % Push vector of values again
d      % Consecutive differences
ZS     % Sign function. Gives 1 or -1 (no 0 in this case)
h      % Concatenate horizontally with previous 1
*      % Multiply. This gives plus or minus depending on increasing character
s      % Sum of vector. This realizes the additions or subtractions
       % Display implicitly

हाहा ने कुछ ऐसा ही लिखा था। RLE इसके लिए अच्छी तरह से काम करता है
Suever

@ मैं देख रहा हूँ:
लुइस

7

सीजेम, 20

q~e`{~_W-g\:W@#*}%:+

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

स्पष्टीकरण:

q~       read and evaluate the input (array of numbers)
e`       RLE encode, obtaining [count number] pairs
{…}%     map each pair
  ~_     dump the count and number on the stack, and duplicate the number
  W-     subtract the previous number (W is initially -1 by default)
  g      get the sign of the result
  \      swap with the other copy of the number
  :W     store it in W (for next iteration)
  @#     bring the count to the top, and raise the number to that power
  *      multiply with the sign
:+       add all the results together

7

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

p=>eval(0+p.map(v=>x+='*-+'[(p>v)+2*(p<v)]+(p=v),x=1))

eval भावों की अल्पविराम से अलग की गई सूची प्राप्त करता है और अंतिम का मान लौटाता है।

परीक्षा

f=p=>eval(0+p.map(v=>x+='*-+'[(p>v)+2*(p<v)]+(p=v),x=1))

t=p=>(0+p.map(v=>x+='*-+'[(p>v)+2*(p<v)]+(p=v),x=1))

function Test() {
  var a=I.value.match(/\d+/g).map(x=>+x) // convert input to a numeric array
  
  var x=f(a),y=t(a)
  O.textContent='Value '+x+'\n(no eval '+y+')'
}  

Test()
#I { width:80%}
<input value='12, 0, 7, 7, 29, 10, 2, 2, 1' id=I>
<button onclick='Test()'>Test</button>
<pre id=O></pre>


4
यह अल्पविराम ऑपरेटर का सबसे खराब दुरुपयोग है जिसे मैं इस साइट पर देख कर याद कर सकता हूं ...
नील

5

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

!x=[[" ""-*+"[2+sign(diff(x))]...] x]'|>join|>parse|>eval

मेरी पहली बार जूलिया गोल्फिंग कर रही है, इसलिए शायद इसमें सुधार हो। इसे ऑनलाइन आज़माएं!

डेनिस ने एक टन बाइट बचा ली।


अच्छी नौकरी। मुझे नहीं पता था कि आप एक कस्टम फ़ंक्शन को परिभाषित कर सकते हैं !
R


4

पायथ - 23 22 20 बाइट्स

केनी के साथ के रूप में, गुणा ऑनलाइन काम नहीं करता है।

vs.i+\+@L"*+-"._M-Vt

टेस्ट सूट बिना eval किए


केविन कौन है?
लीक नून

@LeakyNun मैं थोड़ी देर के बाद आपका नाम भूल गया> _>
माल्टीसेन

@Maltysen Haha, आपकी फ़ोटो हो सोच केविन-नहीं-केनी लाउ
DJMcMayhem

क्षमा करें, मैं खा रहा था, इसलिए मैं अपना समाधान नहीं निकाल सका। तुम्हारी बारी।
लीक नून

@LeakyNun लगभग वहाँ
माल्टीसेन

3

आर, 92 बाइट्स

अभी भी कुछ अच्छी गोल्फिंग होने की संभावना है जो यहां की जा सकती हैं।

eval(parse(t=paste(i<-scan(),c(ifelse(d<-diff(i),ifelse(d>0,"+","-"),"*"),""),collapse="")))

Ungolfed:

i = scan()                # Read list from stdin
d = diff(i)               # Calculate difference between each element of list
s = ifelse(d,             # If d!=0
             ifelse(d>0,  # And if d>1
                    "+",  # Return plus
                    "-"), # Else return minus
             "*")         # Else (i.e. d==0) return multiply.
s = c(s,"")               # Pad the list s with an empty string, so it's the same
                          # length as i
p = paste(i,s,collapse="")# Paste the elements of i and s into one long string.
eval(parse(t=p))          # Evaluate the string as a language object.

मैं सिर्फ एक बाइट को अनुक्रमण दृष्टिकोण
JayCe


2

टीआई-बेसिक, 146 बाइट्स

मैं इसे अच्छी तरह से प्रारूपित करूँगा जब मोबाइल पर नहीं। नींद मुझसे बच जाती है, इसलिए तुम यह हो जाओ। का आनंद लें।

Prompt L₁
"(→Str1
For(A,1,dim(L₁
{0,1→L₂
{0,L₁(A→L₃
LinReg(ax+b) L₁,L₃,Y₁
Equ►String(Y₁,Str2
sub(Str2,1,-1+inString(Str2,"X→Str2
If A>1
Then
L₁(A-1
2+(Ans>L₁(A))-(Ans<L₁(A
Str1+sub("+*-",Ans,1→Str1
End
Str1+Str2→Str2
End
expr(Str1

2

जावास्क्रिप्ट ईएस 6, 64 62 वर्ण

a=>eval(a.map((x,i)=>x+('*+-'[x<a[++i]|(x>a[i])*2])).join``+1)

3
क्या यह एक फ़ंक्शन और aएक पैरामीटर नहीं होना चाहिए ?
edc65

यह के रूप में अमान्य है।
R

@ edc65, हाँ, यह चाहिए। लेकिन वास्तव में यह गिना गया था (61 निर्दिष्ट, लेकिन वास्तविक कोड की लंबाई 59 थी), मैंने सिर्फ एक नए कोड की नकल बुरी तरह से की थी (संपादित होना चाहिए a[i+1]...a[i+1]=> a[++i]...a[i]- 2 चार्ट कम, लेकिन मैंने गलती से पूरे कोड को छोड़ दिया a=>)।
Qwertiy

@ E @s .Iʀᴋ, यह सिर्फ एक गलत पेस्ट है। ऊपर टिप्पणी देखें और अधिक विवरणों के लिए इतिहास संपादित करें।
क्वर्टी

@ क्वर्टी ओके कूल। अच्छा जवाब btw ..
Rɪᴋᴇʀ

1

जावा, 384 बाइट्स

int s(int[]l){int n=l[0],m;for(int i=0;i<l.length-1;i++)if(l[i]<l[i+1])if(i<l.length-2&&l[i+1]!=l[i+2])n+=l[i+1];else{m=l[i+1];while(i<l.length-2&&l[i+1]==l[i+2])m*=l[(i++)+1];n+=m;}else if(l[i]>l[i+1])if(i<l.length-2&&l[i+1]!=l[i+2])n-=l[i+1];else{m=l[i+1];while(i<l.length-2&&l[i+1]==l[i+2])m*=l[(i++)+1];n-=m;}else{m=l[i];while(i<l.length-1&&l[i]==l[i+1])m*=l[i++];n+=m;}return n;}

अघोषित ऑनलाइन प्रयास करें

int s(int[] l)
{
    int n=l[0], m;

    for(int i=0; i<l.length-1; i++)
    {
        if(l[i] < l[i+1])
        {
            if (i<l.length-2 && l[i+1]!=l[i+2])
            {
                n += l[i+1];
            }
            else
            {
                m = l[i+1];
                while(i<l.length-2 && l[i+1]==l[i+2]) m *= l[(i++)+1];
                n += m;
            }
        }
        else if(l[i] > l[i+1])
        {
            if (i<l.length-2 && l[i+1]!=l[i+2])
            {
                n -= l[i+1];
            }
            else
            {
                m = l[i+1];
                while(i<l.length-2 && l[i+1]==l[i+2]) m *= l[(i++)+1];
                n -= m;
            }
        }
        else
        {
            m = l[i];
            while(i<l.length-1 && l[i]==l[i+1]) m *= l[i++];
            n += m;
        }
    }

    return n;
}

1
कुछ त्वरित golfs: int a=l.length, &&=> &, डाल int i=0के रूप में ही "पंक्ति" पर int n=l[0],m
लीक

में if(i<l.length-2&&l[i+1]!=l[i+2])n+=l[i+1];else{m=l[i+1];while(i<l.length-2&&l[i+1]==l[i+2])m*=l[(i++)+1];n+=m;, आप इसे elseब्लॉक के अंदर की सामग्री से बदल सकते हैं ।
लीक नून

1

जावास्क्रिप्ट ईएस 6, 79 वर्ण

a=>eval(`${a}`.replace(/(\d+),(?=(\d+))/g,(m,a,b)=>a+('*+-'[+a<+b|(+a>+b)*2])))

1

पर्ल, 49 बाइट्स

48 बाइट्स कोड + 1 के लिए -p

s/\d+ (?=(\d+))/$&.qw(* - +)[$&<=>$1]/ge;$_=eval

प्रयोग

perl -pe 's/\d+ (?=(\d+))/$&.qw(* - +)[$&<=>$1]/ge;$_=eval' <<< '12 0 7 7 29 10 2 2 1'
75

टिप्पणियाँ

मैंने यहां पाया कि आप PCRE में एक लुकहैड को कैप्चर कर सकते हैं, हालांकि यह थोड़ा unintuitive ( (?=(\d+))इसके बजाय) है((?=\d+)) ) है। यह पढ़ने के बाद समझ में आता है यद्यपि आप बाद के साथ एक शून्य-लंबाई मैच (लुकहेड) पर कब्जा कर रहे होंगे, और इसके बजाय पूर्व के साथ मैच पर कब्जा करेंगे)।

8 बाइट बचाने के लिए @njjalj को धन्यवाद !


@LeakyNun मुझे कभी नहीं पता है कि इसके लिए क्या गणना की जाए, मैं प्रासंगिक मेटा पोस्ट नहीं पा सकता हूं, मैं गिनती को टक्कर देने के लिए खुश हूं, लेकिन मुझे लगा कि चूंकि आप -eमुफ्त में दौड़ सकते हैं, pइसलिए इसे बनाना -pe+1 था ? अभी के लिए अपडेट करेगा, लेकिन अगर आपको कोई ऐसा स्रोत मिल सकता है जिसे मैं आगे बढ़ाने के लिए उद्धृत / लिंक कर सकता हूं, तो यह बहुत बढ़िया होगा!
डोम हेस्टिंग्स

3
@DomHastings 1 सही है, इस कारण से आप कहते हैं + यह मेटा पोस्ट
Sp3000

धन्यवाद @ Sp3000! मुझे मेरे जीवन के लिए वह पद नहीं मिला! @ LeakyNun मेटा पोस्ट +1 के लिए Sp3000 की टिप्पणी के अनुसार
डोम हेस्टिंग्स

जंजीर सशर्त संचालकों का उपयोग करने के बजाय, आप एक सूची से चयन करने के लिए स्पेसशिप ऑपरेटर का उपयोग कर सकते हैं: ऑपरेटर $&.qw(* - +)[$&<=>$1]के प्रतिस्थापन भाग में s///
नवजाल

@ninjalj बेशक! अद्भुत, धन्यवाद! -8 इसके साथ!
डोम हेस्टिंग्स

1

दरअसल, 30 बाइट्स

;2@VpXdX`i-su"+*-"E`M' @o♀+εj≡

दुर्भाग्य से, क्योंकि eval ( ) कमांड केवल TIO पर शाब्दिक मूल्यांकन करता है, यह प्रोग्राम TIO पर काम नहीं करता है।

स्पष्टीकरण:

;2@VpXdX`i-su"+*-"E`M' @o♀+εj≡
;                               duplicate input
 2@V                            overlapping sublists of length <= 2
    pXdX                        discard first and last element (length-1 sublists)
        `i-su"+*-"E`M           map: for each pair of elements
         i-su                     flatten, subtract, sign, increment (results in a 0 if b < a, 1 if b == a, and 2 if b > a)
             "+*-"E               select the correct operation
                     ' @o       put a space at the beginning of the list to pad it properly
                         ♀+     pairwise addition (since addition is not defined for strings and integers, this just zips the lists and flattens the result into a single flat list)
                           εj   join with empty string
                             ≡  eval

1

आर , 120 44 बाइट्स

r=rle(scan());c(1,sign(diff(r$v)))%*%r$v^r$l

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

एल्गोरिथ्म इस उत्तर के समान है , लेकिन मैंने केवल अपने उत्तर को कोड करने के बाद महसूस किया। मेरे मूल उत्तर से बहुत बेहतर जो उपयोग कर रहा था eval(parse)

पूरी तरह से आर के सदिश परिचालनों का लाभ उठाता है - इस सदिश *का उपयोग कर rle(x)$values ^ rle(x)$lenghtsऔर डॉट-उत्पादों का संचालन पहले करता है sign( diff( rle(x)$values ) )(पूर्ववर्ती 1)।


1

05AB1E (विरासत) , 17 16 15 बाइट्स

ü.S…*-+sè‚ζJJ.E

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

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

स्पष्टीकरण:

ü                  # Pair-wise loop over the (implicit) input-list
                   #  i.e. [12,0,7,7] → [[12,0],[0,7],[7,7]]
 .S                # Calculate the signum of the pair (-1 for a<b; 0 for a==b; 1 for a>b)
                   #  i.e. [[12,0],[0,7],[7,7]] → [1,-1,0]
   …*-+sè          # Index over "*-+" (with wrap-around)
                   #  i.e. [1,-1,0] → ['-','+','*']
         ‚ζ        # Zip the two lists together (appending the operands to the numbers)
                   #  i.e. [12,0,7,7] and ['-','+','*','+']
                   #   → [[12,'-'],[0,'+'],[7,'*'],[7,' ']]
           JJ      # Join them together
                   #  [[12,'-'],[0,'+'],[7,'*'],[7,' ']] → '12-0+7*7 '
             .E    # Evaluate as Python code
                   #  i.e. '12-0+7*7' → 61

1
मॉड्यूलर इंडेक्सिंग के कारण, आप स्ट्रिंग के अंत में >जाकर हटा सकते हैं +
एमिगा

@Eignign यकीन नहीं है कि मैं कैसे चूक गया .. धन्यवाद!
केविन क्रूज़सेन

1
आप को हटाने के द्वारा एक और बाइट बचा सकता है Ćऔर ¨, अगर आप का उपयोग ‚ζकरने के बजायø
Emigna

@Emigna ओह, अब यह स्मार्ट है! धन्यवाद। मुझे पता था कि घेरा एक अजीब सा काम था, लेकिन यह पता नहीं था कि इसे कैसे ठीक किया जाए। ‚ζचारों ओर एक आदर्श वैकल्पिक काम है, क्योंकि अंतरिक्ष में इग्नोर है। एक बार फिर धन्यवाद। :)
केविन क्रूज़सेन

0

PHP, 103 बाइट्स

नीट चुनौती। यह उम्मीद से अधिक लंबा हो गया। मुझे लगता है array_mapकि बाइट काउंट का उपयोग करना या इसी तरह से सुधार नहीं होगा, क्योंकि PHP में अनाम फ़ंक्शन अभी भी महंगे हैं ।

foreach(fgetcsv(STDIN)as$v)(0<=$p?$o.=$p.('*-+'[($p>$v)+2*($p<$v)]):_)&&$p=$v;echo eval("return$o$v;");

कमांड लाइन से चलता है, अल्पविराम से अलग सूची के लिए संकेत देगा, जैसे:

php array_to_math.php
12, 0, 7, 7, 29, 10, 2, 2, 1

0

PowerShell v2 +, 62 बाइट्स

-join($args|%{"$o"+'*+-'[($o-lt$_)+2*($o-gt$_)];$o=$_})+$o|iex

अंतरिक्ष-पृथक कमांड-लाइन तर्कों के रूप में इनपुट लेता है, जो स्वचालित सरणी में परिवर्तित हो जाता है $args। हम प्रत्येक तत्व के माध्यम से पुनरावृत्ति करते हैं, $oहमारी पिछली प्रविष्टि क्या थी यह याद रखने के लिए प्रत्येक पुनरावृत्ति का उपयोग करते हुए सहायक चर । हम उचित ऑपरेटर, परोक्ष-परिवर्तित बूलियन मूल्यों पर गणित प्रदर्शन से किया बाहर निकलने के लिए एक अनुक्रमित-स्ट्रिंग का उपयोग (जैसे, अगर पिछली प्रविष्टि छोटा होता है, []के लिए मूल्यांकन करता है 1+2*0तो '*+-'[1]इसका मतलब +चयन किया जाता है)।

संघटित तारों को पाइप लाइन पर छोड़ दिया जाता है। हम (जैसे, एक साथ उन के टुकड़े के सभी इकट्ठा 3-, 1+, 4-एक साथ, आदि) -joinआपरेशन, CONCATENATE अंतिम संख्या (परोक्ष स्ट्रिंग के लिए परिवर्तित) पर, और पाइप इसे करने के लिए iex(के लिए उर्फ Invoke-Expressionऔर के समान eval)।


एक चिंता यह है कि यदि कॉल करने वाले ने पहले ही $ oa मान दिया है (जैसे $ o = 999) तो इस प्रविष्टि में अभिव्यक्ति सही मान की गणना नहीं करेगी। इस समाधान में $ o के आरंभ को जोड़ने की आवश्यकता है।
बेवो

@Bevo यह एक पूर्ण स्क्रिप्ट होने का इरादा है, कमांड लाइन के माध्यम से निष्पादित किया जाता है, और फ़ंक्शन या इंटरैक्टिव शेल के माध्यम से नहीं। मेरे सबमिशन का अधिकांश हिस्सा ऐसा है, क्योंकि इस तरह के परिदृश्य में, चिंता करने के लिए कोई पूर्वनिर्धारित चर नहीं है और इस तरह कोड थोड़ा छोटा हो सकता है।
AdmBorkBork 3

0

जाप , 25 बाइट्स

इसे कम करना चाहते हैं, लेकिन मैं एक कम-संस्करण संस्करण का काम नहीं कर सका।

S+Uä!- ®"*+-"gZÎì)íU
OxU

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


यह 22 बाइट्स तक गिर गया, लेकिन अभी भी लगता है कि इस पर सुधार किया जा सकता है।
झबरा

0

जाप -x , 21 19 बाइट्स

änJ f mÎí*Uò¦ ®ÎpZÊ

कोशिश करो


व्याख्या

                        :Implicit input of array U
  J                     :Prepend -1
än                      :Get deltas
    f                   :Filter (remove 0s)
      m                 :Map
       Î                : Signs
        í               :Interleave
          U             :  Original input
           ò            :  Partition on
            ¦           :   Inequality
              ®         :  Map each sub-array Z
               Î        :    Get first element
                p       :    Raise to the power of
                 ZÊ     :     Length of Z
         *              :Reduce each pair of elements by multiplcation
                        :Implicitly reduce by addition and output
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.