চেইন রুলটি ভিজ্যুয়ালাইজ করুন


10

সংজ্ঞা

দুটি ফাংশন সহ চেইন রুলটিতে বলা হয়েছে:

D[f(g(x))] = f'(g(x)) * g'(x)

অথবা, বিকল্পভাবে:

D[f1(f2(x))] = f1'(f2(x)) * f2'(x)

তিনটি ফাংশন সহ শৃঙ্খলা নিয়মে বলা হয়েছে:

D[f(g(h(x)))] = f'(g(h(x))) * g'(h(x)) * h'(x)

অথবা, বিকল্পভাবে:

D[f1(f2(f3(x)))] = f1'(f2(f3(x))) * f2'(f3(x)) * f3'(x)

ইত্যাদি।

কার্য

  • 2 এবং 21 এর মধ্যে একটি পূর্ণসংখ্যা দেওয়া হয়, প্রথম ফর্মের মধ্যে বা দ্বিতীয় আকারে, বহু ফাংশন দিয়ে চেইন রুল আউটপুট দেয়।
  • আপনি যদি দ্বিতীয় ফর্মটি ব্যবহার করে থাকেন তবে দয়া করে নির্দিষ্ট করুন।

চশমা

  • স্ট্রিংয়ের ফর্ম্যাটটি অবশ্যই উপরে বর্ণিত ঠিক মতো হওয়া উচিত:
    1. সমস্ত স্থান অটুট রাখা
    2. একটি মূলধন D
    3. একটি বর্গাকার বন্ধনী সঙ্গে সঙ্গে নিম্নলিখিত D
    4. নক্ষত্রটি অক্ষত
  • একটি অতিরিক্ত ট্রেলিং স্পেস (ইউ + 0020) অনুমোদিত।
  • দ্বিতীয় ফর্মের (যেমন f01পরিবর্তে f1) ফাংশন নামের শীর্ষস্থানীয় শূন্যগুলি অনুমোদিত।

Testcases

আপনি যদি প্রথম ফর্মটি ব্যবহার করেন:

input output
2     D[f(g(x))] = f'(g(x)) * g'(x)
3     D[f(g(h(x)))] = f'(g(h(x))) * g'(h(x)) * h'(x)

আপনি যদি দ্বিতীয় ফর্মটি ব্যবহার করেন:

input output
2     D[f1(f2(x))] = f1'(f2(x)) * f2'(x)
3     D[f1(f2(f3(x)))] = f1'(f2(f3(x))) * f2'(f3(x)) * f3'(x)

লিডারবোর্ড


ফাংশনের নামগুলি কি ছোট হাতের হতে হবে?
betseg

@ বিটসেগ অবশ্যই হ্যাঁ
ফাঁস নুন

উত্তর:


6

পাইথন 2, 79 বাইট

f=lambda n:0**n*"D[x] ="or f(n-1).replace("x","f%d(x)"%n)+1%n*" *"+" f%d'(x)"%n

সংখ্যাযুক্ত ফাংশন সহ আউটপুট।

বারবার প্রতিটি প্রতিস্থাপন আউটপুট তৈরী করে xদিয়ে fn(x), তারপর সংযোজন * fn'(x)। এর *জন্য বাদ দেওয়া হয়েছে n==1

পুনরাবৃত্ত প্রোগ্রামের সাথে তুলনা করুন (92 বাইট):

r="D[x] = ";n=0
exec'n+=1;r=r.replace("x","f%d(x)"%n)+"f%d\'(x) * "%n;'*input()
print r[:-3]

96 বাইট:

n=input();r='';s='x'
while n:s='f%d(%%s)'%n%s;r=" * f%d'"%n+s[2:]+r;n-=1
print"D[%s] = "%s+r[3:]

সংখ্যাযুক্ত ফাংশন সহ আউটপুট।

নেস্টেড ফাংশনটি f1(f2(f3(x)))ইন sএবং ডানদিকের পাশের এক্সপ্রেশনকে একত্রিত করে r। স্ট্রিং ফর্ম্যাটিং clunky; 3.6 থেকে এফ-স্ট্রিংগুলি আরও ভাল করবে।


5

সেসোস , 49 বাইট

0000000: 2ac992 63fb92 245fb6 6c57be 255bbe 2cc9bf 6d49da  *..c..$_.lW.%[.,..mI.
0000015: 025e7f fdced0 fd67f8 fcde33 b6a7b2 643d4f 65597e  .^.....g...3...d=OeY~
000002a: f77a72 dd73cf fe                                  .zr.s..

এটি অনলাইনে চেষ্টা করুন

অনেকত্রিত

set numin
add 68   ; 'D'
put
sub 7    ; '=' - 'D'
fwd 1
add 32   ; ' '
fwd 1
add 91   ; '['
put
add 2    ; ']' - '['
fwd 1
add 102  ; 'f'
fwd 1
add 40   ; '('
fwd 3
add 120  ; 'x'
rwd 2
get
jmp
    jmp
        fwd 1
        add 1
        rwd 3
        put
        add 1
        fwd 1
        put
        fwd 1
        sub 1
    jnz
    sub 1
    rwd 1
    add 1    ; ')' - '('
    fwd 3
    put
    rwd 1
    jmp
        rwd 3
        sub 1
        fwd 1
        put
        fwd 1
        add 1
        fwd 1
        sub 1
    jnz
    rwd 4
    put
    get
    add 41   ; ')'
    rwd 1
    put
    rwd 1
    put
    get
    add 42   ; '*'
    fwd 1
    put
    fwd 2
    put
    add 1
    fwd 1
    sub 2    ; '\'' - ')'
    put
    add 1    ; '(' - '\''
    put
    fwd 1
jnz
fwd 2
put
rwd 5
put

3

জাভাস্ক্রিপ্ট (ES6), 89 বাইট

f=n=>--n?f(n).replace(/x/g,`${c=(n+15).toString(36)}(x)`)+` * ${c}'(x)`:`D[f(x)] = f'(x)`

অথবা দ্বিতীয় ফর্মটি ব্যবহার করে 75 বাইট:

f=n=>n>1?f(n-1).replace(/x/g,`f${n}(x)`)+` * f${n}'(x)`:`D[f1(x)] = f1'(x)`

বা 82/64 বাইট যদি আমার একটি অতিরিক্ত 1 *মেয়াদ অনুমোদিত হয় :

f=n=>n?f(n-1).replace(/x/g,`${c=(n+14).toString(36)}(x)`)+` * ${c}'(x)`:`D[x] = 1`
f=n=>n?f(n-1).replace(/x/g,`f${n}(x)`)+` * f${n}'(x)`:`D[x] = 1`

1
কেন আপনি main৩-বাইট সংস্করণটিকে আপনার প্রধান হিসাবে রাখেন না?
ফাঁস নুন

1
আপনি যদি পুনরাবৃত্তিশীল হন তবে আপনার দরকার হয় f=অন্যথায় আপনার প্রোগ্রামটি কাজ করবে না।
মূল্য কালি

2
@ কেভিনলউ-না কেনি বাহ, আমি সবসময় তা করতে ভুলে যাই।
নীল

1

রুবি, 72 বাইট

দ্বিতীয় রূপ। @ নীলের উত্তর থেকে পোর্ট টু রুবি।

f=->n{n>1?f[n-1].gsub(?x,"f#{n}(x)")+" * f#{n}'(x)":"D[f1(x)] = f1'(x)"}

1

জুলিয়া, 66 বাইট

!x=x>1?replace(!~-x,"x","f$x(x)")*" * f$x'(x)":"D[f1(x)] = f1'(x)"

@ নীল এর ES6 উত্তর এর পোর্ট। দ্বিতীয় ফর্ম ব্যবহার করে।


0

পাইথন 2, 174 বাইট

i=input()+1
a=lambda x:'('.join(['f%d'%e for e in range(x,i)])+'(x'+')'*(i-x)
print'D[%s] = %s'%(a(1),' * '.join(["f%d'%s%s)"%(e+1,'('*(i-e-2>0),a(e+2))for e in range(i-1)]))

এখানে প্রচলিত থাকার জন্য প্রচুর কক্ষ বাকি left দ্বিতীয় ফর্ম (ব্যবহার f1, f2ইত্যাদি)।


0

জাভাস্ক্রিপ্ট (ES6), 194 বাইট

n=>{s="D[";for(i=1;i<=n;i++)s+="f"+i+"(";s+="x";s+=")".repeat(n);s+="] = ";for(i=1;i<=n;i++){s+="f"+i+"'(";for(j=i+1;j<=n;j++)s+="f"+j+"(";s+="x";s+=")".repeat(n-i+1);if(i-n)s+=" * ";}return s;}

31 বাইটস সংরক্ষণ করেছেন @ লিক্যুনকে ধন্যবাদ।

এটি একটি বেনামে ল্যাম্বদা ফাংশন। আমি নিশ্চিত যে এটিকে ছোট করার কোনও উপায় আছে ...

Ungolfed

var chain = function(n) {
    var str = "D["; // derivative symbol
    for (var i = 1; i <= n; i++) {
        str += "f"+i+"("; // put in n functions, each labeled f1(, f2(, etc.
    }
    str += "x"; // add in the function input, usually "x"
    for (var i = 0; i < n; i++) {
        str += ")"; // add in n end parentheses
    }
    str += "] = "; // add in the end bracket and the equals operator
    for (var i = 1; i <= n; i++) {
        str += "f"+i+"'("; // add in all n of the outer functions with the prime operator
        for (var j = i+1; j <= n; j++) {
            str += "f"+j+"("; // add in all of the inner functions
        }
        str += "x"; // add in the input, "x"
        for (var j = 1; j <= n; j++) {
            str += ")"; // close the parentheses
        }
        if (i !== n) {
            str += " * "; // the multiplication of all of the outer primed functions
        }
    }
    return str;
};

পরিবর্তন করুন strমধ্যে s
লিকি নুন

ঠিক আছে, আমি এটি পরিবর্তন করতে ভুলে গেছি লল
ড্রু খ্রিস্টেনসেন

পরিবর্তন for(j=i;j<=n;j++)s+=")";করুনs+=")".repeat(n-i+1);
লিকি নুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.