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


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.