ভগ্নাংশ যুক্ত করা হচ্ছে


14

একটি প্রোগ্রাম বা একটি ফাংশন লিখুন যা ইনপুট হিসাবে একই দৈর্ঘ্যের দুটি খালি খালি তালিকা নেয় এবং নিম্নলিখিতটি করে:

  • সংখ্যা পেতে প্রথম তালিকার উপাদানগুলি ব্যবহার করে,
  • ডিনোমিনিটরগুলি পেতে দ্বিতীয় তালিকার উপাদানগুলি ব্যবহার করে,
  • সরলকরণের পরে ফলাফলগুলি ভগ্নাংশ প্রদর্শন (2/4=>1/2)করে, "+" এর দ্বারা পৃথক করা,
  • "=" প্রদর্শন করে এবং শেষ ভগ্নাংশের পরে সংযোজনের ফলাফল।

উদাহরণ:

ইনপুট

[1, 2, 3, 3, 6]
[2, 9, 3, 2, 4]

আউটপুট

1/2+2/9+1+3/2+3/2=85/18

বিধি সম্পর্কে

  • তালিকার উপাদানগুলি ইতিবাচক পূর্ণসংখ্যার হবে,
  • উপাদানগুলি স্পেস দ্বারা পৃথক করা যায়, যেমন: 1/2 + 2/9 + 1 + 3/2 + 3/2 = 85/18ঠিক আছে,
  • চলমান নতুন লাইনের অনুমতি রয়েছে,
  • তালিকাগুলি উপরের তুলনায় অন্যান্য বিন্যাসে নেওয়া যেতে পারে, যেমন: .: (1 2 3 3 6)বা {1;2;3;3;6}, ইত্যাদি,
  • 1হিসাবে প্রকাশ করা যেতে পারে 1/1,
  • মুদ্রণের পরিবর্তে আপনি উপযুক্ত স্ট্রিং ফিরে আসতে পারেন,
  • আপনার ভুল ইনপুট হ্যান্ডেল করার দরকার নেই,
  • সবচেয়ে কম কোড জয়ী

এটিতে কতগুলি মূল্যবোধ সমর্থন করতে হবে?
ব্র্যাড গিলবার্ট b2gills

@ ব্র্যাডগিলবার্টব 2 গিলস আমি কমপক্ষে -30 000 থেকে 30 000 বলব তবে কিছু ভাষার ক্ষেত্রে এটি অতিরিক্ত সমস্যা হবে কিনা তা আমি জানি না। সুতরাং আপনার পছন্দের ভাষার কেবল স্ট্যান্ডার্ড পূর্ণসংখ্যা পরিসীমা।

@ প্রজেমেসোয়াউপি "আপনার পছন্দের ভাষার স্ট্যান্ডার্ড পূর্ণসংখ্যার রেখা" বলা ভাল ধারণা নয়, কিছু ভাষার বুলিয়ান হিসাবে স্ট্যান্ডার্ড পূর্ণসংখ্যা রয়েছে
ফিলিপ

ধন্যবাদ! @ ব্র্যাডগিলবার্টব 2 গিলস তারপর কমপক্ষে -30 000 থেকে 30 000.

[1, 2] [2, 9] [3, 3] ...পরিবর্তে আমরা কি ভগ্নাংশ পেতে পারি ?
অলিভিয়ার

উত্তর:


1

এম , 12 11 বাইট

÷µFj”+;”=;S

এটি একটি dyadic লিঙ্ক। ত্রুটির কারণে এটি পুরো প্রোগ্রাম হিসাবে কাজ করে না। Fত্রুটির কারণেও প্রয়োজনীয়।

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

কিভাবে এটা কাজ করে

÷µFj”+;”=;S  Dyadic link. Left argument: N. Right argument: D

÷            Perform vectorized division, yielding an array of fractions (R).
 µ           Begin a new, monadic chain. Argument: R
  F          Flatten R. R is already flat, but j is buggy and has side effects.
   j”+       Join R, separating by '+'.
      ;”=    Append '='.
         ;S  Append the sum of R.

আমি পছন্দ করি যে প্রোগ্রামের চতুর্থাংশেরও বেশি '=' যুক্ত করতে পারে। :)
Computronium

7

রুবি 2.4, 54 53 টি অক্ষর

->n,d{a=n.zip(d).map{|n,d|n.to_r/d};a*?++"=#{a.sum}"}

ধন্যবাদ:

রুবি, 58 57 56 টি অক্ষর

->n,d{t=0;n.zip(d).map{|n,d|t+=r=n.to_r/d;r}*?++"=#{t}"}

নমুনা রান:

irb(main):001:0> puts ->n,d{t=0;n.zip(d).map{|n,d|t+=r=n.to_r/d;r}*?++"=#{t}"}[[1, 2, 3, 3, 6], [2, 9, 3, 2, 4]]
1/2+2/9+1/1+3/2+3/2=85/18

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


1
a=n.zip(d).map{|f|(f*?/).to_r};a*?++"=#{a.sum}"রুবিতে ২.৪ আপনাকে 3 বাইট সাশ্রয় করে।
মান কালি

ধন্যবাদ @ ভালুআইঙ্ক আমি সন্দেহ করেছিলাম যে এটি সম্ভব হতে পারে, কেবল স্থানীয়ভাবে বা টিআইও-তে না ছিল 2.4।
manatwork

1
হ্যাঁ, আমি বিশেষত 2.4 ইনস্টল করেছি যাতে আমি sumহাহা দিয়ে সমাধানগুলি পরীক্ষা করতে পারি । এছাড়াও আমি কেবল মনে রেখেছিলাম যে .map{|i,j|i.to_r/j}1 বাইট দ্বারা সংক্ষিপ্ত
মান কালি

ডোহ। আমি মাধ্যমে বিভিন্ন পন্থা চেষ্টা .to_fএবং বিভাগ, কিন্তু বিভাজক বলে মনে করা হয়নি Rationalসঙ্গে Fixnum। আবার ধন্যবাদ, ভ্যালুআইঙ্ক
manatwork

6

গণিত, 33 বাইট

Row@{Row[#/#2,"+"],"=",Tr[#/#2]}&

ইনপুট

[{1, 2, 3, 3, 6}, {2, 9, 3, 2, 4}]


নয় Row@@{#/#2,"+"}হিসাবে একই Row[#/#2,"+"]?
ফেয়ারসাম

হ্যাঁ! তুমি ঠিক!
J42161217

1
ফ্যান্টাস্টিক! আমি বুঝতে পারি না যে Rowএই জাতীয় জিনিসগুলির জন্য এত সুবিধাজনক ছিল :)
গ্রেগ মার্টিন

3

পাইথন 3 , 104 বাইট

9 বাইট ধন্যবাদ ফিলিপ নারদী বাটিস্তার জন্য।

from fractions import*
def f(*t):c=[Fraction(*t)for t in zip(*t)];print('+'.join(map(str,c)),'=',sum(c))

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



পুনঃটুইট
লিকি নুন

পরিবর্তন +'='+str(sum(c))করুন,'=',sum(c)
ফিলিপ নারদী বাটিস্তা

@ ফিলিপনার্দিবাটিস্তা ধন্যবাদ, আমি এখানে পাইথন 3 ব্যবহার করেছি (ব্যক্তিগত পছন্দের ভিত্তিতে)।
ফুটো নুন


3

পার্ল 6 ,  77  73 বাইট

{join('+',($/=[@^a Z/ @^b]).map:{.nude.join('/')})~"="~$/.sum.nude.join('/')}

চেষ্টা করে দেখুন

{($/=[@^a Z/@^b])».nude».join('/').join('+')~'='~$/.sum.nude.join('/')}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{  # bare block lambda with two placeholder params 「@a」 and 「@b」

  (
    $/ = [              # store as an array in 「$/」 for later use

      @^a Z/ @^b        # zip divide the two inputs (declares them)

    ]

  )».nude\              # get list of NUmerators and DEnominators
  ».join('/')           # join the numerators and denominators with 「/」

  .join('+')            # join that list with 「+」

  ~
  '='                   # concat with 「=」
  ~

  $/.sum.nude.join('/') # get the result and represent as fraction
}

3

ক্লোজার, 71 বাইট

#(let[S(map / % %2)](apply str(concat(interpose '+ S)['=(apply + S)])))

অন্তর্নির্মিত ভগ্নাংশের জন্য হ্যাঁ!



2

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

সিনট্যাক্স সংবাহন মধ্যে তালিকা লাগে (a)(b)

let f =

a=>b=>a.map((v,i)=>F(A=v,B=b[i],N=N*B+v*D,D*=B),N=0,D=1,F=(a,b)=>b?F(b,a%b):A/a+'/'+B/a).join`+`+'='+F(A=N,B=D)

console.log(f([1, 2, 3, 3, 6])([2, 9, 3, 2, 4]))


2

জাভা, 225 বাইট

int c(int a,int b){return b>0?c(b,a%b):a;}
(N,D)->{int n=0,d=1,i=0,g;String s="";for(;i<N.length;g=g(N[i],D[i]),N[i]/=g,D[i]/=g,s+=(i>0?"+":"")+N[i]+"/"+D[i],n=n*D[i]+N[i]*d,d*=D[i++],g=g(n,d),n/=g,d/=g);return s+"="+n+"/"+d;}

Nএবং Dউভয়ই int[]প্রাসঙ্গিক।

আমি কেভিন ক্রুইজসেনের জিসিডি ফাংশনটি পুনরায় ব্যবহার করেছি ।

এটি দেখুন এবং এটি অনলাইন পরীক্ষা করুন!


2

জুলিয়া v0.4 +, 66 53 বাইট

-13 বাইটস ডেনিসকে ধন্যবাদ

a^b=replace(join(a.//b,"+")"=$(sum(a.//b))","//","/")

অনলাইনে চেষ্টা করে দেখুন!

পর্যায়ক্রমে, যদি ভগ্নাংশগুলি //পরিবর্তে প্রদর্শিত হয় /তবে নিম্নলিখিত 35 বাইটের জন্য কাজ করে :

a^b=join(a.//b,'+')"=$(sum(a.//b))"

2

সেটলএক্স , 103 বাইট

f:=procedure(a,b){i:=1;l:=[];while(i<=#a){l:=l+[a[i]/b[i]];i+=1;}s:=join(l,"+");return s+"="+eval(s);};

fযেখানে আপনার দুটি তালিকা সন্নিবেশ করানো হয় একটি ফাংশন তৈরি করে ।

ungolfed:

f := procedure (a,b) {
    i:=1;
    l:=[];
    while(i<=#a){
        l:=l+[a[i]/b[i]];
        i+=1;
    }
    s:=join(l,"+");
    return s+"="+eval(s);
};

নামযুক্ত ভেরিয়েবল এবং টীকা সহ:
সেটলএক্স কোনও মন্তব্য বৈশিষ্ট্য সরবরাহ করে না তাই আসুন আমরা ভেবে দেখি যে আমরা মন্তব্য করতে পারি%

f := procedure(firstList,secondList) {
    count := 1;
    list := []; 
    while(count <= #firstList) {
        % calculate every fraction and save it as a list
        list := list + [firstList[count]/secondList[count]];
        count += 1;
    }
    % Seperate every list entry with a plus ([2/3,1] -> "2/3+1")
    str := join(list, "+");
    % eval executes the string above and thus calculates our sum
    return str + "=" + eval(str);
};


# ফার্স্টলিস্ট যদি # সেকেন্ডলিস্ট থেকে আলাদা হয়?
রোজলুপ

আপনি ডিফারনেট আকার বলতে চান? প্রশ্নটিতে বলা হয়েছে যে প্রথম তালিকাটি গণকের দ্বারা ব্যবহৃত হয় এবং ভুল ইনপুটটি ইনজোর করা যায়
ব্লু উইজার্ড

তবে এটির তুলনায় দ্বিতীয়টি: যদি দ্বিতীয় তালিকাটি দীর্ঘ হয় তবে অবশিষ্ট এন্ট্রিগুলি উপেক্ষা করা হবে। তালিকাটি ছোট হলে একটি রানটাইম ত্রুটি ঘটবে।
ব্লু উইজার্ড

1

পার্ল 6, 72 বাইট 65 বাইট

নেটিভ এবং স্বয়ংক্রিয় যুক্তি উচিত সহজ এই করতে, কিন্তু ডিফল্ট stringification দশমিক হিসেবে এখনও, তাই আমরা আছে .nude( নিউ merator এবং ডি nominator) যা আমাদের স্কোর নিহত এবং তোলে 1 কুশ্রী :(

my \n = 1,2,3,3,6; my \d = 2,9,3,2,4;
(n Z/d)».nude».join("/").join("+")~"="~([+] n Z/d).nude.join("/")

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


সাইটে স্বাগতম! প্রথম উত্তর!
প্রোগ্রামার



1

পিএইচপি> = 7.1, 190 বাইট

<?function f($x,$y){for($t=1+$x;$y%--$t||$x%$t;);return$x/$t."/".$y/$t;}[$n,$d]=$_GET;for($p=array_product($d);$x=$n[+$k];$e+=$x*$p/$y)$r[]=f($x,$y=$d[+$k++]);echo join("+",$r)."=".f($e,$p);

অনলাইন সংস্করণ

পরিবর্তে আউটপুট return$x/$t."/".$y/$t;সঙ্গে প্রতিস্থাপনের জন্য +14 বাইটreturn$y/$t>1?$x/$t."/".$y/$t:$x/$t;nn/1



1

setlX , 62 বাইট

[a,b]|->join([x/y:[x,y]in a><b],"+")+"="++/[x/y:[x,y]in a><b];

ungolfed:

[a,b]|->                  define a function with parameters a and b
  join(                 
    [ x/y :               using set comprehension, make a list of fractions 
      [x,y] in a><b       from the lists zipped together
    ],
    "+"
  )                       join them with "+"
  + "="                   concat with an equals sign
  +                       concat with
  +/[x/y:[x,y]in a><b]    the sum of the list
;

দোভাষী অধিবেশন


0

আর, 109 বাইট

f=MASS::fractions;a=attributes
g=function(n,d)paste(paste(a(f(n/d))$f,collapse='+'),a(f(sum(n/d)))$f,sep='=')

MASSগ্রন্থাগার প্রয়োজন (তার fractionsশ্রেণীর জন্য)। কাজg স্ট্রিং হিসাবে প্রয়োজনীয় আউটপুট প্রদান করে।

এটি অনলাইন চেষ্টা করুন! (আর-ফিডাল লিঙ্ক)


0

এমএটিএল , 32 বাইট

/YQv'%i/%i+'wYD3L)61yUYQVwV47b&h

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

ব্যাখ্যা

বিবেচনা করুন [1, 2, 3, 3, 6], [2, 9, 3, 2, 4]ইনপুট হিসাবে।

/         % Implicit inout. Divide element-wise
          % STACK: [0.5 0.222 1 1.5 1.5]
YQ        % Rational approximation (with default tolerance)
          % STACK: [1 2 1 3 3], [2 9 1 2 2]
v         % Conctenate all stack elements vertically
          % STACK: [1 2; 2 9; 1 2; 3 2; 3 2]
'%i/%i+'  % Push this string (sprintf format specifier)
          % STACK: [1 2; 2 9; 1 2; 3 2; 3 2], '%i/%i+'
wYD       % Swap, sprintf
          % STACK: '1/2+2/9+1/1+3/2+3/2+'
3L)       % Remove last entry
          % STACK: '1/2+2/9+1/1+3/2+3/2'
61        % Push 61 (ASCII for '=')
          % STACK: '1/2+2/9+1/1+3/2+3/2', 61
y         % Duplicate from below
          % STACK: '1/2+2/9+1/1+3/2+3/2', 61, '1/2+2/9+1/1+3/2+3/2'
U         % Evaluste string into a number
          % STACK: '1/2+2/9+1/1+3/2+3/2', 61, 4.722
YQ        % Rational approximation 
          % STACK: '1/2+2/9+1/1+3/2+3/2', 61, 85, 18
VwV       % Convert to string, swap, convert to string
          % STACK: '1/2+2/9+1/1+3/2+3/2', 61, '18', '85'
47        % Push 47 (ASCII for '/')
          % STACK: '1/2+2/9+1/1+3/2+3/2', 61, '18', '85', 47
b         % Bubble up in stack
          % STACK: '1/2+2/9+1/1+3/2+3/2', 61, '85', 47, '18'
&h        % Concatenate all stack elements horizontally. Implicitly display
          % STACK: '1/2+2/9+1/1+3/2+3/2=85/18'

0

টিআই-বেসিক, 100 বাইট

:L₁⁄L₂                                              //Creates a fraction from Lists 1 & 2, 7 bytes
:toString(Ans→Str1                                  //Create string from list, 7 bytes
:inString(Ans,",→A                                  //Look for commas, 9 bytes
:While A                                            //Begin while loop, 3 bytes
:Str1                                               //Store Str1 to Ans, 3 bytes
:sub(Ans,1,A-1)+"+"+sub(Ans,A+1,length(Ans)-A→Str1  //Replace "," with "+", 33 bytes
:inString(Ans,",→A                                  //Check for more commas, 9 bytes
:End                                                //End while loop, 2 bytes
:Str1                                               //Store Str1 to Ans, 3 bytes
:sub(Ans,2,length(Ans)-2                            //Remove opening and closing brackets, 13 bytes
:Ans+"="+toString(expr(Ans                          //Add "=" and answer, 11 bytes

শুরুতে নোট করুন , এর চেয়ে আলাদা /। এটি ভগ্নাংশগুলি তাদের ফর্মগুলি ধরে রাখে। এটি নেতিবাচক ভগ্নাংশ নিয়ে কাজ করে

দীর্ঘশ্বাস । টিআই-বেসিক স্ট্রিং সহ ভয়ঙ্কর । আমাদের যদি করণীয় হ'ল ভগ্নাংশগুলি মুদ্রণ করা হত এবং তার পরে তাদের যোগফলটি হবে:

টিআই-বেসিক, 12 বাইট

:L₁⁄L₂    //Create fractions from lists, 7 bytes
:Disp Ans //Display the above fractions, 3 bytes
:sum(Ans  //Display the answer, 2 bytes

তার মানে আমার কোডের ৮৮ বাইট কেবল উত্তর ফর্ম্যাট করতেই ব্যয় হয়! Hmph



0

অ্যাক্সিয়াম, 212 বাইট

C==>concat;S==>String;g(a)==C[numerator(a)::S,"/",denom(a)::S];h(a:List PI,b:List PI):S==(r:="";s:=0/1;#a~=#b or #a=0=>"-1";for i in 1..#a repeat(v:=a.i/b.i;s:=s+v;r:=C[r,g(v),if i=#a then C("=",g(s))else"+"]);r)

পরীক্ষা

(5) -> h([1,3,4,4,5,6], [2,9,5,5,6,7])
   (5)  "1/2+1/3+4/5+4/5+5/6+6/7=433/105"
                                                             Type: String
(6) -> h([1,3,4,4], [2,9,5,5,6,7])
   (6)  "-1"
                                                             Type: String

0

ক্যাসিও বেসিক, 161 বাইট

Dim(List 1)->A
for 1->I to A step 1
3*I-2->B
List 1[I]->C
List 2[I]->D
locate 1,B,C
locate 1,B+1,"/"
locate 1,B+2,D
C/D+E->E
next
locate 1,B+3,"="
locate 1,B+4,E

ব্যাখ্যা:

  • ইনপুট সংখ্যা সংরক্ষণ করা হয় A
  • A পুনরাবৃত্তিও
  • B সঠিক প্রদর্শনের জন্য একটি কাউন্টার হিসাবে কাজ করে
  • Iতালিকার 1 এবং 2 এর আইটেমটি সংরক্ষণ করা হয়েছে C এবংD
  • পরিবর্তনশীল প্রদর্শন C / পরিবর্তনশীলD
  • সংরক্ষণ C/ D+E ইনE
  • সর্বশেষ নম্বরটি সনাক্ত করার পরে =এবংE

0

হাস্কেল (ল্যাম্বডাবোট), 94 91 86 বাইট

t=tail.((\[n,_,d]->'+':n++'/':d).words.show=<<)
a#b|f<-zipWith(%)a b=t f++'=':t[sum f]

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

ধন্যবাদ লাইকনি এর জন্য -8বাইটস !

Ungolfed

-- convert each fraction to a string (has format "n%d", replace '%' with '/' and prepend '+' ("+n/d"), keep the tail (dropping the leading '+')
t = tail.((\[n,_,d]->'+':n++'/':d).words.show=<<)
-- build a list of fractions
a # b = let f = zipWith(%) a b in
-- stringify that list, append "=" and the stringified sum of these fractions
  t f ++ "=" ++ t [sum f]

তোমার অনুপস্থিত একটি import Data.Ratioজন্য %যা প্রস্তাবনা নেই।
লাইকনি

1
আপনি প্রতিস্থাপন করে কিছু বাইট সংরক্ষণ করতে পারবেন "?"++সঙ্গে '?':
লাইকনি

1
সংক্ষেপিত এছাড়াও জন্য কাজ করে "/"++dএবং "="++
লাইকনি

1
পুনরায় সাজানো আরও কিছু বাইট সংরক্ষণ করে:tail(f>>=t)++'=':(tail.t.sum)f
লাইকোনি

1
ফেলে tailএবং =<<মধ্যে tআরো কিছু সংরক্ষণ: এটি অনলাইন ব্যবহার করে দেখুন!
লাইকনি

0

গুগল শিটস, 83 81 বাইট

=ArrayFormula(JOIN("+",TRIM(TEXT(A:A/B:B,"?/???")))&"="&TEXT(sum(A:A/B:B),"?/???"

টেলর স্কটকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

পত্রকগুলি সূত্রের শেষে স্বয়ংক্রিয়ভাবে 2 টি বন্ধনী বন্ধনী যুক্ত করবে।

দুইটি অ্যারের হিসাবে ইনপুট হয় সম্পূর্ণতা কলামের Aএবং B। ইনপুটগুলির নীচে খালি সারিগুলি ত্রুটি নিক্ষেপ করবে।


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