বহুবচনগুলির প্রতীকী সংহতকরণ


21

প্রদত্ত স্ট্রিংয়ে অনির্দিষ্ট অবিচ্ছেদ্য প্রয়োগ করুন। কেবলমাত্র আপনি যে নিয়মগুলি ব্যবহার করবেন তা সংজ্ঞায়িত করা হয়েছে:

Xcx ^ (n) dx = (c / (n + 1)) x ^ (n + 1) + C, n ≠ -1
সি, সি, এবং এন সমস্ত ধ্রুবক।

বিশেষ উল্লেখ:

  • আপনার অবশ্যই কোনও সম্ভাব্য বৈশিষ্ট্যগুলির সাথে বহুভুজকে সংহত করতে সক্ষম হতে হবে:
    • একটি সহগ, বিন্যাসে সম্ভবত একটি ভগ্নাংশ (numerator/denominator)।
    • ই এবং const ধ্রুবক হিসাবে স্বীকৃতি, এবং তাদের ব্যবহারে এগুলি সহ ভগ্নাংশ বা ভাব তৈরি করতে সক্ষম হবেন (যেমন কোনও ভগ্নাংশে (e/denominator)বা (numerator/e), বা যদি প্রকাশকদের মধ্যে রাখা যেতে পারে x^(e+1))
      • এই দুটি বিশেষ ধ্রুবক বাদে, সমস্ত সহগ সংখ্যা যুক্তিযুক্ত, আসল সংখ্যা হবে।
    • বিন্যাসে একটি ঘনিষ্ঠ, সম্ভবত একটি ভগ্নাংশ x^(exponent)
      • তাদের সাথে eবা πতাদের মধ্যে প্রকাশ করা , একপাশে বাদ দিয়ে, প্রকাশকারীগুলিতে থাকবে না। (আপনার মতো জিনিসগুলিকে একীভূত করতে হবে না x^(e+1)তবে আপনি সংহত করতে পারেন x^(e))
    • নন- x 1-চর ভেরিয়েবলগুলি (যেমন f) ব্যবহার করতে পারেন
      • এটি কেবল ASCII 65-90 এবং 97-122 রেঞ্জের জন্য।
    • আপনাকে চেইন রুল ব্যবহার বা সংহত করতে হবে না x^(-1)।
  • আউটপুটের প্যাডিং থাকতে হবে (পদগুলির মধ্যে পৃথকীকরণ, অর্থাত্‍ x^2 + x + C।
  • উপরের বৈশিষ্ট্যগুলির সাথে কীভাবে সংহত করা যায় তা যদি অজানা থাকে তবে প্রোগ্রামটি প্রিন্ট করা উচিত "Cannot integrate "+input।
  • এটি একটি সম্পূর্ণ প্রোগ্রাম হতে হবে।

বোনাসেস:

  • -10% যদি আপনি মার্কডাউন ("পরিবর্তে x^2," x<sup>2</sup>) রূপান্তরিত "সুন্দর" এক্সটেনশনগুলি মুদ্রণ করেন ।
  • -10% যদি আপনি সমীকরণ মুদ্রণ করেন (যেমন ∫xdx = (1/2)x^2 + C)

উদাহরণ:

ইনপুট:

x

আউটপুট:

(1/2)x^(2) + C

ইনপুট:

-f^(-2)

আউটপুট:

f^(-1) + C

ইনপুট:

(1/7)x^(1/7) + 5

আউটপুট:

(1/56)x^(8/7) + 5x + C

ইনপুট:

πx^e

আউটপুট:

(π/(e+1))x^(e+1) + C

ইনপুট:

(f+1)^(-1)

আউটপুট:

Cannot integrate (f+1)^(-1)

1
আশ্চর্য হ'ল আমাদের কাছে ইতিমধ্যে এই প্রশ্নটি নেই - তবে আমি কোনও ডুপ খুঁজে পাইনি। +1
— ডিজিটাল ট্রমা

3
১. আমি অনুমান করি যে eএবং অন্যান্য πসহগের একমাত্র মানগুলি মূলদ সংখ্যা হবে? অর্থাত্ মাল্টিভারিয়াল বহুবর্ষগুলি হ্যান্ডেল করা প্রয়োজন নয়? ২. আপনি যখন " নন-এক্স ১-চর ভেরিয়েবলগুলি " বলছেন , আপনি a-zA-Zকি অন্য ইউনিকোড রেঞ্জ অন্তর্ভুক্ত করার জন্য সীমাবদ্ধ করছেন বা আপনার কি উদ্দেশ্য?
— পিটার টেলর 21

1
আপনি কি মনে করেন যে যদি কোনও প্রোগ্রামের ln(x) + Cএকটি ইনপুট প্রিন্ট করে তবে কোনও বোনাস থাকা উচিত x^(-1)?
— আর্কটরাস

1
@ আম্পোরা নং - এটি এলএন এর গুণাগুণগুলির সাথে সম্পর্কিত কীটগুলির সম্পূর্ণ ক্যান খুলল।
— অ্যাডিসন ক্রম্প 21

1
@ লিফওয়িলার্টস ১) আমি বোঝাতে চাইছিলাম যে x^(e+1)কোনও সংহত হবে না, তবে এটি কোনও সংহতির ফলাফল হতে পারে। 2) একাধিক অক্ষর ভেরিয়েবল থাকবে না। 3) হ্যাঁ। ৪) হ্যাঁ, তবে এটি হওয়া উচিত (1/56)x^(1/7+1) + C(উদাহরণগুলিতে আমি একটি ভুল করেছি)।
— অ্যাডিসন ক্রম্প 13

উত্তর:


2

গাণিতিক 478 * 0.9 = 430.2

φ=(α=ToExpression;Π=StringReplace;σ="Cannot integrate "<>#1;Λ=DeleteDuplicates@StringCases[#1,RegularExpression["[a-df-zA-Z]+"]];μ=Length@Λ;If[μ>1,σ,If[μ<1,Λ="x",Λ=Λ[[1]]];Ψ=α@Π[#1,{"e"->" E ","π"->" π "}];Φ=α@Λ;Θ=α@Π[#1,{"e"->" 2 ","π"->" 2 "}];λ=Exponent[Θ,Φ,List];Θ=Simplify[Θ*Φ^Max@@Abs@λ];Θ=PowerExpand[Θ/.Φ->Φ^LCM@@Denominator@λ];If[Coefficient[Ψ,Φ,-1]==0&&PolynomialQ[Θ,Φ],"∫("<>#1<>")d"<>Λ<>" = "<>Π[ToString[Integrate[Ψ,Φ],InputForm],{"E"->"e","Pi"->"π"}]<>" + C",σ]])&

এটি একটি সত্য ফাংশন তৈরি করে φ যা একটি স্ট্রিংকে ইনপুট হিসাবে নেয়। (তা গণিতের সম্পূর্ণ প্রোগ্রাম হিসাবে গণনা করে?)

অবারিত সংস্করণটি হ'ল:

φ=(
    σ="Cannot integrate "<>#1;
    Λ=DeleteDuplicates@StringCases[#1,RegularExpression["[a-df-zA-Z]+"]];
    If[Length@Λ>1,σ,
        If[Length@Λ<1,Λ="x",Λ=Λ[[1]]];
        Ψ=ToExpression@StringReplace[#1,{"e"->" E ","π"->" π "}];
        Φ=ToExpression@Λ;
        Θ=ToExpression@StringReplace[#1,{"e"->" 2 ","π"->" 2 "}];
        λ=Exponent[Θ,Φ,List];
        Θ=Simplify[Θ*Φ^Max@@Abs@λ];
        Θ=PowerExpand[Θ/.Φ->Φ^LCM@@Denominator@λ];
        If[Coefficient[Ψ,Φ,-1]==0&&PolynomialQ[Θ,Φ],
            "∫("<>#1<>")d"<>Λ<>" = "<>StringReplace[ToString[Integrate[Ψ,Φ],InputForm],{"E"->"e","Pi"->"π"}]<>" + C",
            σ
        ]
    ]
)&

নোট করুন যে গ্রীক অক্ষরগুলি ইনপুটটিতে অন্য সমস্ত অক্ষর ব্যবহার করতে সক্ষম হওয়া প্রয়োজন।


7

ম্যাটল্যাব, 6 646 x 0.9 = 581.4 বাইট

t=input('','s');p=char(960);s=regexprep(t,{p,'pi([a-zA-Z])','([a-zA-Z])pi','([\)e\d])([a-zA-Z])','([a-zA-Z])(([\(\d]|pi))','e^(\(.+?\))','e'},{'pi','pi*$1','$1*pi','$1*$2','$1*$2','exp($1)','exp(1)'});r=[s(regexp(s,'\<[a-zA-Z]\>')),'x'];r=r(1);e=0;try
I=int(sym(strsplit(s,' + ')),r);S=[];for i=I
S=[S char(i) ' + '];end
b=0;o=[];for i=1:nnz(S)
c=S(i);b=b+(c==40)-(c==41);if(c==42&&S(i+1)==r)||(b&&c==32)
c='';end
o=[o c];end
o=regexprep(char([8747 40 t ')d' r ' = ' o 67]),{'pi','exp\(1\)','exp','\^([^\(])',['1/' r]},{p,'e','e^','^($1)',[r '^(-1)']});catch
e=1;end
if e||~isempty(strfind(o,'log'))
disp(['Cannot integrate ' t]);else
disp(o);end

এটি বর্তমানে প্রতীকী ইন্টিগ্রেশন সক্ষমতাতে নির্মিত ম্যাটল্যাবগুলি ব্যবহার করে একটি কার্য-অগ্রগতি। বর্তমানে প্রয়োজনীয়তা আপডেট করা হয়েছে সুতরাং ফর্ম্যাটটি এখন প্রয়োজনীয়তার সাথে মেলে। এটি দ্বিতীয় -10% বোনাসের জন্যও যোগ্যতা অর্জন করে।

যদি কেউ আউটপুটটি সংশোধন করার উপায় বা পরামর্শ দিতে চায় বা এই উত্তরটি অন্য উত্তরের ভিত্তি হিসাবে ব্যবহার করতে চায় তবে নির্দ্বিধায় :)। আমি যদি সময়টি পাই তবে আমি এটির সাথে খেলতে থাকব এবং আউটপুটটিকে কীভাবে পুনরায় ফর্ম্যাট করতে হবে তা আমি ভাবতে পারি কিনা তা দেখুন।

আপডেট: ঠিক আছে, তাই আরও কিছু কাজ করার পরে, কোডটি বর্তমানে এখানে কীভাবে দাঁড়িয়েছে তা এখানে। এটি এখনও একটি কাজ চলছে, তবে এখন প্রয়োজনীয় আউটপুটটি মেলানোর আরও কাছে getting

t=input('','s'); %Get input as a string
p=char(960); %Pi character
s=regexprep(t,{p,'pi([a-zA-Z])','([a-zA-Z])pi','([\)e\d])([a-zA-Z])','([a-zA-Z])(([\(\d]|pi))','e^(\(.+?\))','e'},{'pi','pi*$1','$1*pi','$1*$2','$1*$2','exp($1)','exp(1)'}); %Reformat input to work with built in symbolic integration
r=[s(regexp(s,'\<[a-zA-Z]\>')),'x'];r=r(1); %determine the variable we are integrating
e=0; %Assume success
try
    I=int(sym(strsplit(s,' + ')),r); %Integrate each term seperately to avoid unwanted simplificaiton
    S=[];
    for i=I
        S=[S char(i) ' + ']; %Recombine integrated terms
    end
    %Now postprocess the output to try and match the requirements
    b=0;o=[];
    for i=1:nnz(S)
        %Work through the integrated string character by character
        c=S(i);
        b=b+(c=='(')-(c==')'); %Keep track of how many layers deep of brackets we are in
        if(c=='*'&&S(i+1)==r)||(b&&c==' ') %If a '*' sign preceeds a variable. Also deblank string.
            c=''; %Delete this character
        end
        o=[o c]; %merge into new output string.
    end
    o=regexprep([char(8747) '(' t ')d' r ' = ' o 'C'],{'pi','exp\(1\)','exp','\^([^\(])',['1/' r]},{p,'e','e^','^($1)',[r '^(-1)']});
catch
    e=1; %failed to integrate
end
if e||~isempty(strfind(o,'log'))
    disp(['Cannot integrate ' t])  %bit of a hack - matlab can integrate 1/x, so if we get a log, we pretend it didn't work.
else
    disp(o)% Display it.
end

এটি বর্তমানে এটি যা উত্পাদন করে তার কয়েকটি উদাহরণ এখানে। আপনি দেখতে পাচ্ছেন যে এটি একেবারে ঠিক নয়, তবে কাছাকাছি চলেছে।

ইনপুট:

x
-f^(-2)
(1/7)x^(1/7) + 5
πx^e
(f+1)^(-1)

আউটপুট:

∫(x)dx = x^(2)/2 + C
∫(-f^(-2))df = f^(-1) + C
∫((1/7)x^(1/7) + 5)dx = x^(8/7)/8 + 5x + C
∫(πx^(e))dx = (πx^(e+1))/(e+1) + C
Cannot integrate (f+1)^(-1)

আমি আউটপুট নিয়ে সমস্যাটি ধরে নিয়েছি যে ভোগাগুলি হ'ল ভগ্নাংশটি সরল করে না / একক সহগতে যায় না?
— অ্যাডিসন ক্রম্প

@ ফ্ল্যাগএএসপ্যাম, ভগ্নাংশগুলি সরল করা হচ্ছে, তবে সমস্যাটি হ'ল তারা ভেরিয়েবলের ভুল দিক দিয়ে শেষ হয়েছে। উদাহরণস্বরূপ তৃতীয় উদাহরণে এটির ফলাফল x^(8/7)/8যা গাণিতিকভাবে সঠিক যখন আপনি চান সেই ফর্মটিতে নেই - (1/8)x^(8/7)।
— টম কার্পেন্টার

আপনি এখন পর্যন্ত কেবলমাত্র একমাত্র উত্তর, তা বিবেচনা করে আমি এই পরিবর্তনটি বিবেচনা করতে পারি যে যদি ভগ্নাংশের জন্য "কোনও গাণিতিকভাবে সঠিক, বৈধ আউটপুট" না পাওয়া দু-এক দিনের মধ্যে আরও উত্তর না আসে।
— অ্যাডিসন ক্রম্প

আপনার উত্তরটি বৈধ - আপনাকে আর ভগ্নাংশের আউটপুট সহজ করতে হবে না। সি:
— অ্যাডিসন ক্রম্প

আমি এটি পরে কিছুটা গল্ফ করব এবং বাইটগুলি গণনা করব।
— টম কার্পেন্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.