ডিফারেনশান ক্যালকুলাস সাহায্য করুন!


52

আমি প্রোগ্রামিং পছন্দ করি এবং প্রতিটি ভাষা জানি, তবে আমি গণিতে স্তন্যপান করি। দুর্ভাগ্যক্রমে, আমার বিদ্যালয়ের কম্পিউটারের শিক্ষার্থীদের অবশ্যই ক্যালকুলাসের এক বছর সময় লাগবে। পরের সপ্তাহে একটি পরীক্ষা আছে, এবং আমি ডেরিভেটিভসের কোনও সূত্র জানি না!

সূত্রগুলি খুঁজতে আমাকে সহায়তা করুন। আমার একটি ঠকানো শীট দরকার - একটি প্রোগ্রাম (যতটা সম্ভব সংক্ষিপ্ত তাই আমার শিক্ষক এটি লক্ষ্য করবেন না) যা 4*x^3-2ইনপুট হিসাবে একটি অভিব্যক্তি (যেমন ) নেয় এবং ডেরাইভেটিভকে আউটপুট করে। (ইনপুট এবং আউটপুট কমান্ড লাইন আর্গুমেন্ট, এসটিডিএন, এসটিডিআউট বা অন্য যে কোনও কিছু ব্যবহার করে কিনা সেদিকে আমি খেয়াল রাখিনা I'm

পরীক্ষাটি নিম্নলিখিত ধরণের কার্যাদি অন্তর্ভুক্ত করে:

  • ধ্রুবক, যেমন -3বা8.5
  • পাওয়ার ফাংশন, যেমন x^0.5বাx^-7
  • সূচকীয় ফাংশন, যেমন 0.5^xবা 7^x(বেস সবসময় ধনাত্মক থাকে)
  • ধ্রুবক একটি ক্রিয়াকলাপ দ্বারা গুণিত, 3*x^5বা হিসাবে-0.1*0.3^x
  • একাধিক ফাংশনের যোগফল এবং পার্থক্য like -5*x^2+10-3^x

আমার শিক্ষক সর্বদা তার প্রশ্নগুলি ঠিক একইভাবে ফর্ম্যাট করে যা উপরে দেখানো হয়েছে। তিনি পাই বা ই এর মতো কোনও ভগ্নাংশ, সংখ্যা বা সত্যই বড় সংখ্যা (1,000 এর চেয়ে বড়) ব্যবহার করেন না। তিনি কখনই প্রথম বন্ধনী ব্যবহার করেন না এবং সর্বদা তারকাচিহ্ন ( *) ব্যবহার করে গুণ দেখান । শুধুমাত্র ব্যবহার করা পরিবর্তনশীল সর্বদা এক্স

অন্যদিকে, আমার শিক্ষক উত্তরগুলি সম্পর্কে বেশ হালকা। এগুলিকে মোটামুটি সরলীকরণ করার বা উপরে বর্ণিত ঠিক মতো ফর্ম্যাট করার দরকার নেই, যতক্ষণ না উত্তরটি কী বলছে তা স্পষ্ট।

আমি যে কোনও ভাষা ব্যবহার করতে পারি, মনে রাখবেন যে আমি নিজে থেকে ডেরিভেটিভগুলি বের করতে পারি না। সুতরাং যদি প্রোগ্রামটি সমীকরণগুলি মোকাবেলা করতে বা ডেরিভেটিভগুলি গণনা করতে অন্তর্নির্মিত ফাংশনগুলি ব্যবহার করে, আমি এটি ব্যবহার করতে সক্ষম হব না।

পরীক্ষার সময়, আমার কাছে প্রতারণা শীটে প্রোগ্রাম বা ইন্টারনেট ছাড়া অন্য কোনও ইন্টারনেট বা অন্য কোনও ফাইলে অ্যাক্সেস থাকবে না।

দ্রষ্টব্য: এই দৃশ্যটি সম্পূর্ণ কল্পিত। বাস্তব জীবনে প্রতারণা করা এবং অন্যকে প্রতারণা করা ভুল এবং তা কখনই করা উচিত নয়।


3
আমরা কি আশা করতে পারি যে xসর্বদা পার্থক্যের জন্য পরিবর্তনশীল?
কাইল কানোজ

2
উত্তরটি সরল করতে হবে? আমাদের কি পদগুলি যুক্ত করার দরকার আছে?
রেইনবোল্ট

1
আমার ধারণা, আমার ক্যালকুলাস প্রকল্পের জন্য এখন সময় এসেছে scrblnrd3.github.io/ জাভাস্ক্রিপ্ট- সিএএস জ্বলতে যদি আমি আসলে এটি গল্ফ করতে পারি
scrblnrd3

1
আমাদের কি অনুমান করা উচিত যে কোনও প্যারেন্স নেই?
চার্লস

2
আমি আমার সম্পাদনায় এই প্রশ্নের বেশিরভাগ উত্তর দিয়েছি । এখানে কোনও বৈজ্ঞানিক স্বরলিপি বা পণ্য বিধি নেই।
Ypnypn

উত্তর:


8

ওল্ফ্রাম 136 134 109 [নীচে তার মন্তব্যের জন্য কলিকে ধন্যবাদ]

পণ্য এবং চেইন বিধিগুলির জন্য সীমাবদ্ধ সমর্থন।

n=n_?NumberQ;d[v_Plus]:=d/@v;d[v_]:=v/.{x_^n:>x^(n-1)d[x]n,n^x_:>Log[n]d[x]n^x,x_*y__:>d[x]y+d[y]x,n:>0,x:>1}

উদাহরণ:

d[3^(x^2)*(x^3+2*x)^2]
>> 2*3^x^2*(2+3*x^2)*(2*x+x^3) + 2*3^x^2*x*(2*x+x^3)^2*Log[3]

মনে রাখবেন যে এটি কোনও "সমীকরণগুলি মোকাবেলা করতে বা ডেরিভেটিভগুলি গণনা করতে" অন্তর্নির্মিত কোনও কার্য ব্যবহার করে না: কেবল প্যাটার্ন-ম্যাচিং জড়িত রয়েছে *।

[* আচ্ছা ... প্রযুক্তিগতভাবে দোভাষী এছাড়াও ইনপুট থেকেও একটি ধরণের এএসটি তৈরি করে এবং তৈরি করেন]


Ungolfed:

d[expr_Plus] := d /@ expr;
d[expr_] := expr /. {
   Power[x_, n_?NumberQ] :> n Power[x, n - 1] d[x],
   Power[n_?NumberQ, x_] :> Log[n] Power[n, x] d[x],
   Times[x_, y__] :> d[x] y + d[y] x,
   n_?NumberQ :> 0,
   x :> 1
}

এটি অন্য সংস্করণ । আপনি লিখতে নেই Power, Timesইত্যাদি idk কত যে যদিও আপনার golfed সংস্করণ উন্নতি হবে, কিন্তু আপনি অন্তত একটি আছে Timesযাতে আপনি Def করতে পারেন সেখানে। কিছু অক্ষর সংরক্ষণ করুন। আপনার নীতিহীন সংস্করণে এটি বলেছে তা নোট করুন d[expr_]:= v/...

1
@ ক্যাল "আইডিকে এটি কতটা আপনার গল্ফড সংস্করণে উন্নতি করবে" - 25 বাইট! চিয়ার্স!
সারান

26

পার্ল - 121 122

(+২ এর জন্য -p)

s/(?<![-\d.*^])-?[\d.]+(?![*^\d.])/0/g;s/(?<!\^)x(?!\^)/1/g;s/x\^(-?[\d.]+)/"$1*x^".($1-1)/ge;s/([\d.]+)\^x/ln($1)*$&/g

টেস্ট:

$ perl -p diff.pl << EOF
> -3
> 8.5
> x^0.5
> x^-7
> 0.5^x
> 7^x
> 3*x^5
> -0.1*0.3^x
> -5*x^2+10-3^x
> EOF
0
0
0.5*x^-0.5
-7*x^-8
ln(0.5)*0.5^x
ln(7)*7^x
3*5*x^4
-0.1*ln(0.3)*0.3^x
-5*2*x^1+0-ln(3)*3^x

আমার কাছে
রেইগেক্স

3
পছন্দ করেছেন রেজেক্স খারাপ, রেজেেক্স ভয়ঙ্কর।
এমনিআইপ

মেহহ, আমাকে এতে মারধর করুন। খারাপ না! (পিএস: রেজেক্স সুন্দর)
মার্টিন এন্ডার

8
এখানে কী চলছে আমার কোনও ধারণা নেই। +1
Qwr

4
ব্যাখ্যা: কনস্ট্যান্ট -> 0, এক্স -> 1, এক্স ^ n -> এন * এক্স ^ (এন -1), এ ^ এক্স -> এলএন (ক) * এ ^ এক্স
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

7

হাস্কেল 38 টি চর

ফাংশনটি dএকটি ফাংশন নেয় এবং একটি ফাংশন দেয়। এটি একটি পাওয়ার সিরিজের আকারে ইনপুট করা হয় এবং একইভাবে আউটপুট করা হয় (যা যা এক ধরণের।)

d=zipWith(*)[1..].tail

উদাহরণস্বরূপ, আমরা ইনপুট থাকলে x->x^2, আমরা পাই x->2*x

λ <Prelude>: d [0,0,1]
[0,2]

সূচকীয় ফাংশনের জন্য।

λ <Prelude>: take 10 exp --exp redefined above to be in power series notation
[1.0,1.0,0.5,0.16666666666666666,4.1666666666666664e-2,8.333333333333333e-3,1.388888888888889e-3,1.984126984126984e-4,2.48015873015873e-5,2.7557319223985893e-6]
λ <Prelude>: let d=zipWith(*)[1..].tail in take 10 $ d exp
[1.0,1.0,0.5,0.16666666666666666,4.1666666666666664e-2,8.333333333333333e-3,1.388888888888889e-3,1.984126984126984e-4,2.48015873015873e-5,2.7557319223985893e-6]

5
তবে ওপি কোনও গণিত জানে না! আমরা কী আশা করতে পারি যে তিনি তার ক্ষমতার ইনপুটটিকে একটি পাওয়ার সিরিজ হিসাবে প্রকাশ করবেন?
শরণ

ভাল তিনি স্পষ্টতই স্বরলিপি জানেন। তিনি কীভাবে ডেরাইভেটিভ অপারেশন করবেন তা জানেন না।
পাইরুলেজ

5
এই হ্যান্ডেল করতে পারেন 2^x?
কাইল কানোজ

5
এটি কোন জাদুবিদ্যা?
ক্রিস্টোফার ওহলসন

7
আমি দেখতে পাচ্ছি না যে এটি " 4*x^3-2ইনপুট হিসাবে একটি অভিব্যক্তি (যেমন ) নেয় ", যেমন ওপি দ্বারা প্রয়োজনীয়।
গাবে

5

প্রোলগ 176

d(N,0):-number(N).
d(x,1).
d(-L,-E):-d(L,E).
d(L+R,E+F):-d(L,E),d(R,F).
d(L-R,E-F):-d(L,E),d(R,F).
d(L*R,E*R+L*F):-d(L,E),d(R,F).
d(L^R,E*R*L^(R-1)+ln(L)*F*L^R):-d(L,E),d(R,F).

সমর্থিত অপারেটরগুলি: বাইনারি +, বাইনারি -, বাইনারি *, বাইনারি ^, একেরি -। নোট করুন যে unary +সমর্থিত নয়।

নমুনা রান:

49 ?- d(-3,O).
O = 0.

50 ?- d(8.5,O).
O = 0.

51 ?- d(x^0.5,O).
O = 1*0.5*x^ (0.5-1)+ln(x)*0*x^0.5.

52 ?- d(x^-7,O).
ERROR: Syntax error: Operator expected
ERROR: d(x
ERROR: ** here **
ERROR: ^-7,O) . 
52 ?- d(x^ -7,O).
O = 1* -7*x^ (-7-1)+ln(x)*0*x^ -7.

53 ?- d(x,O).
O = 1.

54 ?- d(0.5^x,O).
O = 0*x*0.5^ (x-1)+ln(0.5)*1*0.5^x.

55 ?- d(7^x,O).
O = 0*x*7^ (x-1)+ln(7)*1*7^x.

56 ?- d(3*x^5,O).
O = 0*x^5+3* (1*5*x^ (5-1)+ln(x)*0*x^5).

57 ?- d(-0.1*0.3^x,O).
O = 0*0.3^x+ -0.1* (0*x*0.3^ (x-1)+ln(0.3)*1*0.3^x).

58 ?- d(-5*x^2+10-3^x,O).
O = 0*x^2+ -5* (1*2*x^ (2-1)+ln(x)*0*x^2)+0- (0*x*3^ (x-1)+ln(3)*1*3^x).

^-ক্রম যখন ক্রমানুসারে চলে তখন বিভ্রান্ত হয় । এক্সপ্রেশনটি সঠিকভাবে পার্স করার জন্য একটি স্পেস অবশ্যই between োকাতে হবে ^এবং তার -জন্য।

আশা করি আপনার শিক্ষক সমীকরণের গোলযোগকে কিছু মনে করবেন না।

পাগলামী সময়:

59 ?- d(x^x,O).
O = 1*x*x^ (x-1)+ln(x)*1*x^x.

60 ?- d((x^2-x+1)*4^ -x,O).
O = (1*2*x^ (2-1)+ln(x)*0*x^2-1+0)*4^ -x+ (x^2-x+1)* (0* -x*4^ (-x-1)+ln(4)* - 1*4^ -x).

4

সি, 260

আরে, আমার মনে হয় আমি আপনার শিক্ষককে চিনি! যার মাথায় লাইব্রেরি প্যাটার্ন-ম্যাচিং ফাংশন সম্পাদন করে এমন শিক্ষার্থীদের সনাক্ত করার অতিপ্রাকৃত দক্ষতা এটিই নয়?

সুতরাং, ব্যবহার sscanfকরা প্রশ্নবিদ্ধ নয় ... তবে চিন্তা করবেন না:

#define P s--||printf(
q=94,s,c,t,a;main(){char i[999],*p=i,*e=p;gets(i);for(;c=*p++,t=q^94|c^45?c%26==16?c%16/3:c/46:1,s=(a="30PCqspP#!C@ #cS` #!cpp#q"[s*5+t])/16-3,a&1&&(p[-1]=0),t||(P"*0"),P"/x"),P"/x*%s",e),P"*ln(%s)",e),s=0),a&2&&(e=p),c;putchar(q=c));}

চলমান উদাহরণ (ইনপুট অন stdin; আউটপুট যায় stdout):

4 * এক্স ^ 3-2

4*x^3/x*3-2*0

এই ফর্ম্যাটটি ন্যায়বিচারের চেয়ে আরও ভাল 12*x^2, কারণ এইভাবে আপনার শিক্ষক নিশ্চিত হতে পারেন যে আপনি নিজের উত্তরটি নিজেই গণনা করেছেন এবং অন্য কারও কাছ থেকে অনুলিপি করে প্রতারণা করেন নি!

X + + 2 ^ x এর

x/x+2^x*ln(2)

আউটপুটটিতে সামান্য ডোমেন সমস্যা রয়েছে x=0তবে এটি প্রায় সর্বত্রই সঠিক !

রেফারেন্সের জন্য, এখানে একটি অসমাপ্ত, পঠনযোগ্য (নিছক প্রাণীদের দ্বারা) সংস্করণ। এটিতে 5 টি রাজ্য এবং 5 বিভাগের ইনপুট অক্ষর সমেত একটি রাষ্ট্রীয় মেশিন ব্যবহার করে।

void deriv(char* input)
{
    char* p = input; // current position
    char* exp = p; // base or exponent
    char q = '^'; // previous character

    // State machine has 5 states; here are examples of input:
    // state 0: 123
    // state 1: 123*
    // state 2: 123*x
    // state 3: 123*x^456
    // state 4: 123^x
    int state = 0;

    // Control bits for state machine:
    // bit 0: special action: stop recording base or exponent
    // bit 1: special action: start recording base or exponent
    // bits 4-7: if first column, specify how to calculate the derivative:
    //              3 - multiply the constant term by 0
    //              4 - divide x by x
    //              5 - divide x^n by x and multiply by n
    //              6 - multiply n^x by ln(n)
    // bits 4-7: if not first column, specify the next state
    //              (plus 3, to make the character printable)
    const char* control =
        "\x33\x30\x50\x43\x71"
        "\x73\x70\x50\x23\x21"
        "\x43\x40\x20\x23\x63"
        "\x53\x60\x20\x23\x21"
        "\x63\x70\x70\x23\x71";

    for (;;) {
        int c = *p++;

        // Convert a char to a category:
        // category 0: // - +
        // category 3: // *
        // category 2: // x
        // category 4: // ^
        // category 1: // numbers: 0...9 and decimal point
        int category;
        int action;    

        if (q == '^' && c == '-')
            category = 1; // unary minus is a part of a number
        else
            category = c%26==16?c%16/3:c/46; // just does it

        // Load new state and action to do
        action = control[state * 5 + category];

        if (action & 1)
            p[-1] = 0;
        state = (action >> 4) - 3;
        if (category == 0)
        {
            if (state == 0)
                printf("*0");
            if (state == 1)
                printf("/x");
            if (state == 2)
                printf("/x*%s", exp);
            if (state == 3)
                printf("*ln(%s)", exp);
            state = 0;
        }
        if (action & 2)
            exp = p;

        if (c == 0 || c == '\n') // either of these can mark end of input
            break;

        putchar(c);
        q = c;
    }
}

পিএস এই getsফাংশনটির জন্য নজর রাখুন: এর মধ্যে একটি সুরক্ষার দুর্বলতা রয়েছে যা আপনার শিক্ষককে দীর্ঘ দীর্ঘ ইনপুট সরবরাহ করে আপনার মনে একটি রুটকিট চালিয়ে দিতে পারে ...


3

লুয়া 296 268 263

function d(a)l=""i=a:find"x" if i then if a:sub(i-1,i-1)=="^"then l="log("..a:sub(1,i-2)..")*"..a elseif a:sub(i+1,i+1)=="^"then l=a:sub(i+2).."*"..a:sub(1,i)p=a:sub(i+2)-1 if p~=1 then l= l..a:sub(i+1,i+1)..p end else l=a:sub(1,i-2)end else l="0"end return l end

খুব golfed না এবং বর্তমানে একাধিক পদ হ্যান্ডেল করতে পারে না (আপনি শুধু এটা কয়েক বার, ডান? চালাতে পারেন), কিন্তু এটা সব ব্যবস্থা করতে সক্ষম n^x, x^nএবং nইনপুট হিসাবে।


Ungolfed ...

function d(a)
   l=""
   i=a:find"x"
   if i then
      if a:sub(i-1,i-1)=="^" then
         l="log("..a:sub(1,i-2)..")*"..a
      elseif a:sub(i+1,i+1)=="^" then
         l=a:sub(i+2).."*"..a:sub(1,i)
         p=a:sub(i+2)-1 -- this actually does math here
         if p~=1 then
            l= l..a:sub(i+1,i+1)..p
         end
      else
         l=a:sub(1,i-2)
      end
   else
      l="0"
   end
   return l
end

str.func(str,...)== str:func(...), সেজন্য স্ট্রিংগুলি সর্বোপরি metatable পেয়েছে ...
mniip

@ এমনিপ: এখনও লুয়া শিখছেন। ভকভগক.
কাইল কানোজ

1
যেহেতু ওপি কেবল "তিনি তার মাথার মধ্যে গণনা করতে পারেন" কোড খুঁজছেন, তাই আমি কোনও ফাংশন সংজ্ঞায়িত করার এবং lস্থানীয় ঘোষণার বিষয়ে বিরক্ত করব না । ইনপুটটি কেবলমাত্র সঞ্চয় করা হবে আশা করুন aএবং আউটপুটটি সংরক্ষণ করা হবে l
মার্টিন ইন্ডার

আপনি এতে প্রথম বন্ধনী বাদ দিতে পারেন a:find("x"), এছাড়াও নোট করুন যে 1thenকেবল লুয়া 5.2-এ কাজ করে
জুনে

@ এমনিপ: ওহ, এটি দুর্দান্ত coolচ্ছিক ()1thenঠিক যেমন আমি 5.2 না (যে কোন সিপিইউ আপডেট পর্যন্ত গবেষণা প্রবন্ধে পর বি / সি আমি জগাখিচুড়ি কিছু আপ করতে না চান সম্পন্ন করা হয় করছেন না) নির্দিষ্ট করা হয়।
কাইল কানোজ

3

ECMAScript 6, 127 বাইট

এখানে আমার রেইজেক্স প্রচেষ্টা (প্রতিস্থাপন কলব্যাকের মধ্যে একটি একক রেজেক্স এবং কিছু যুক্তি ব্যবহার করে):

i.replace(/(^|[*+-])(\d+|(?:([\d.]+)\^)?(x)(?:\^(-?[\d.]+))?)(?![.*^])/g,(m,s,a,b,x,e)=>s+(b?'ln'+b+'*'+a:e?e--+'*x^'+e:x?1:0))

এটি প্রত্যাশা করে যে ইনপুট স্ট্রিংটি সংরক্ষণ করা হবে iএবং কেবল ফলাফলটি দেয়। এটি একটি ECMAScript 6 অনুবর্তী কনসোল (ফায়ারফক্সের মত) ব্যবহার করে দেখুন।


2

সেড, 110

খুব আক্ষরিক অর্থে "এগুলিকে মোটামুটি সরলীকরণ করার বা উপরে বর্ণিত ঠিক মতো বিন্যাস করার দরকার নেই, যতক্ষণ না উত্তরটি কী বলছে তা পরিষ্কার হয়ে যায়":

s/.*/__&_/;s/x\^(-?[0-9.]+)/\1*x^(\1-1)/g;s/([0-9.]+)\^/ln\1*\1^/g;s/([^(][-+_])[0-9.]+([-+_])/\10\2/g;s/_//g

বাইট গণনায় rপতাকাটির জন্য 1 টি রয়েছে ।

মতামত সহ উজ্জ্বল:

# Add underscores before and after the string, to help with solo-constant recognition
s/.*/__&_/
# Power rule: replace x^c with c*x^(c-1) where c is a number
s/x\^(-?[0-9.]+)/\1*x^(\1-1)/g
# Exponentials: replace c^ with lnc*c^ where c is a number
# (This assumes that there will be an x after the ^)
s/([0-9.]+)\^/ln\1*\1^/g
# Constants: replace ?c? with ?0? where c is a number and ? is +, -, or _
# Except if it's prededed by a parenthesis then don't, because this matches c*x^(c-1)!
s/([^(][-+_])[0-9.]+([-+_])/\10\2/g
# Get rid of the underscores
s/_//g

নমুনা রান:

$ cat derivatives.txt
-3
8.5
x^0.5
x^-7
0.5^x
7^x
3*x^5
-0.1*0.3^x
-5*x^2+10-3^x

$ sed -re 's/.*/__&_/;s/x\^(-?[0-9.]+)/\1*x^(\1-1)/g;s/([0-9.]+)\^/ln\1*\1^/g;s/([^(][-+_])[0-9.]+([-+_])/\10\2/g;s/_//g' derivatives.txt
-0
0
0.5*x^(0.5-1)
-7*x^(-7-1)
ln0.5*0.5^x
ln7*7^x
3*5*x^(5-1)
-0.1*ln0.3*0.3^x
-5*2*x^(2-1)+0-ln3*3^x

আমি বাজি ধরছি এটি আরও গল্ফ করা যেতে পারে; এ আমার প্রথম ব্যবহার করে দেখুন এর sed। মজা!


1

রুবি, 152

... বা 150 মুদ্রণের দরকার না পড়লে ... বা 147 যদি আপনি নিজেও যোগ দিতে চান এমন অ্যারে দিয়ে ঠিক থাকেন তবে।

সাথে চালানো ruby -nal

p gsub(/(?<!\^)([-+])/,'#\1').split(?#).map{|s|s[/x\^/]?$`+$'+"x^(#{$'}-1)":s[/-?(.*)\^(.*)x/]?s+"*ln(#{$1}*#{$2[0]?$2:1})":s[/\*?x/]?($`[0]?$`:1):p}*''

ungolfed:

p gsub(/(?<!\^)([-+])/,'#\1').split(?#). # insert a # between each additive piece, and then split.
map{ |s|                                 
    if s[/x\^/]                          # if it's c*x^a
        $` + $' + "x^(#{$'}-1)"          #      return c*ax^(a-1)
    elsif s[/-?(.*)\^(.*)x/]             # if it's c*b^(a*x)
        ln = $1 + ?* + ($2[0] ? $2 : 1)  #      return c*b^(a*x)*ln(b*a)
        s+"*ln(#{ln})"
    elsif s[/\*?x/]                      # if it's c*x
        ($`[0] ? $` : 1)                 #      return c
    else                                 # else (constant)
        nil                              #      return nil
    end
}*''

এটির সাথে আমার প্রধান সমস্যাটি হ'ল যথাযথ বিভাজনে নেওয়া অক্ষরের সংখ্যা। আমি কেবল অন্য উপায়টিই ভাবতে পারি split(/(?<!\^)([-+])/)যা দেয় +এবং দেয়- তাদের নিজস্ব ফলাফল হিসাবে। আরও ভাল সমাধানের জন্য কোনও ইঙ্গিত?

এছাড়াও, sখালি না থাকলে ফিরে যাওয়ার কি আরও ছোট উপায় আছে , তবে অন্যথায় ফিরে আসুন y? আমি ব্যবহার করেছি s[0]?y:s? জেএস-এ আমি কেবল করতাম s||y, তবে ""রুবিতে সত্য।


একটি lookahead কথন সাহায্যের তাই চাই,: split(/(?<!\^)(?=[-+])/)?
ডিএলসাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.