একটি অনুচিত ভগ্নাংশে মিশ্রিত সংখ্যা


19

একটি অনুচিত ভগ্নাংশে মিশ্রিত সংখ্যা

এই চ্যালেঞ্জটিতে আপনি একটি মিশ্র সংখ্যাটিকে একটি অনুচিত ভগ্নাংশে রূপান্তর করবেন।

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


উদাহরণ

4 1/2
9/2

12 2/4
50/4

0 0/2
0/2

11 23/44
507/44

সবিস্তার বিবরণী

আপনি অনুমান হতে পারে ইনপুটের হর 0. ইনপুট সবসময় ফর্ম্যাটে হতে হবে হতে হবে না x y/zযেখানে X, Y, Z নির্বিচারে নন-নেগেটিভ পূর্ণসংখ্যা। আপনার আউটপুট সরল করার দরকার নেই।


এটি তাই বাইট জিতে সংক্ষিপ্ততম কোড।


5
আপনার "পার্সিং" ট্যাগটি যুক্ত করা উচিত। আমি নিশ্চিত যে বেশিরভাগ উত্তর গণিত করার চেয়ে ইনপুট পার্সিং এবং আউটপুট ফর্ম্যাট করতে আরও বাইট ব্যয় করবে।
নিমি

3
আউটপুটটি কি যৌক্তিক সংখ্যার ধরণের হতে পারে বা এটির একটি স্ট্রিং হওয়া দরকার?
মার্টিন এন্ডার

2
@ অ্যালেক্সা .: ... তবে চ্যালেঞ্জের একটি বড় অংশ। এর বিবরণ অনুসারে এই জাতীয় ক্ষেত্রে ট্যাগটি ব্যবহার করা উচিত।
নিমি

7
পারি x, yএবং zনেতিবাচক হতে পারে?
ডেনিস

2
আমি যে চ্যালেঞ্জটি ধরে নিচ্ছি তা নির্ভর করে, তবে ইনপুট ফর্ম্যাটটি কি "xy / z" বাধ্যতামূলক, বা স্থানটি নতুন লাইন হতে পারে, এবং / অথবা x,y,zপৃথক ইনপুটগুলি? বেশিরভাগ উত্তরগুলি ধরে নিচ্ছে যে ইনপুট ফর্ম্যাটটি আসলেই বাধ্যতামূলক x y/z, তবে কিছু না, তাই এই প্রশ্নের একটি নির্দিষ্ট উত্তর দেওয়া উচিত।
কেভিন ক্রুইজসেন

উত্তর:


1

জাপট, 10 বাইট

উহু, বর্তমানে সিজেমে মারছে!

U*W+V+'/+W

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

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

       // Implicit: [U,V,W] = eval(input). This automatically discards the slash.
U*W+V  // Calculate the new numerator: (whole part * denominator) + numerator.
+'/+W  // Add the slash and the denominator.
       // Implicit: output last expression

আমি বুঝতে না পেরে গতকাল আমি কীভাবে একটি উত্তর ছাড়িয়ে 15 টি করে আয় অর্জন করেছি তা জানার চেষ্টা করে বেশ ভাল সময় ব্যয় করেছি: আমার প্রথম সবুজ চেকমার্ক! \ o /
ETH প্রোডাকশন


7

সিজেম, 16 15 14 বাইট

l'/']er~:Xb'/X

অথবা

l'/']er~_@b'/@

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

l      e# Read input.
'/']er e# Replace the "/" with a "]".
~      e# Evaluate the string as code. If the input was "i n/d", this pushes [i n] d.
:X     e# Store the denominator in X.
b      e# Treat [i n] as base-d digits. This effectively computes i*d + n.
'/     e# Push a slash.
X      e# Push the denominator.

অন্য সংস্করণটি আরও কিছুটা স্ট্যাক শিফটিং ব্যবহার করে একটি ভেরিয়েবল ব্যবহার করা এড়িয়ে চলে।


আমার সত্যিকার অর্থে আরও সিজেমে বেস রূপান্তর ব্যবহার শুরু করা দরকার।
এজেলং ফলগুলি

একটি বিকল্প সংস্করণ '//~\S/1$b'/@:, এটি 13 বাইট। সম্পাদনা : ওহ আমি ইনপুটটি ভুলে গেছি l
ক্রোমিয়াম

4

গণিত, 58 বাইট

ToExpression@StringReplace[#," "->"+"]~ToString~InputForm&

এটি সরল ফল দেয় returns যদি স্ট্রিংয়ের পরিবর্তে যুক্তিযুক্ত সংখ্যা আউটপুট করা ভাল হয় তবে আমরা 19 বাইট সংরক্ষণ করতে পারি:

ToExpression@StringReplace[#," "->"+"]&

4

পাওয়ারশেল, 47 44 42 বাইট

ক্রস করা হয়েছে 44 এখনও নিয়মিত 44; (

$l,$n,$d=$args-split'\D';"$(+$l*$d+$n)/$d"

রেজেক্স ব্যবহার করে একটি দম্পতি বাইট গল্ফ করেছেন -split। থেকে Golfed আর কয়েকটি ধন্যবাদ TessellatingHeckler Regex সোয়াপিং দ্বারা।

$args-split'\D'আমাদের ইনপুট আর্গুমেন্ট গ্রহণ করা এবং অ অঙ্ক অক্ষর উপর splits। এখানে এটি দুটি বিভাজন সম্পাদন করে, একটি শ্বেতস্পেসে, অন্যটি /চরিত্রটিতে। ফলাফলগুলি একই সাথে তিনটি ভেরিয়েবলে একসাথে অ্যাসাইনমেন্ট ব্যবহার করে সংরক্ষণ করা হয়। তারপরে আমরা স্ট্রিং আউটপুটটি ( $lএফিট সংখ্যা বারের বার $dএনমোনিটর প্লাস $nউমরেটর) কোড কোড, /স্ল্যাশ এবং তারপরে $dপুনরায় এনামিনেটর হিসাবে কার্যকর করি ।


হাই, আমি মনে করি আপনি -split ' |/'একটি "এই বা এই" বা "রেজেক্সের সাথে মিল রেখে একটি চরিত্র সংরক্ষণ করতে পারেন বা এমন -split '\D'কোনও কিছুতে বিভক্ত করতে ব্যবহার করতে পারেন যা কোনও অঙ্ক এবং গুলি (এইচ) এর আগে দুটি অক্ষর নয়। যদি @ ডাউনগোট আউটপুট ফর্ম্যাটে কিছুটা নমনীয় হতে ইচ্ছুক হয় তবে '{0}*{2}+{1};{2}'-f($args-split'\D')|iexএটি 40 বাইট এবং এতে অনেক শীতল আউটপুট রয়েছে কারণ সংখ্যাটি একে অপরের উপরেও রয়েছে !
TessellatingHeckler

1
@ টেসেল্লাটিংহেকলার রিজেক্স সহায়তার জন্য ধন্যবাদ। আমি ডাউনগোটকে ইনপুট চেয়েছি। তবে $l,$n,$d=$args-split'\D';+$l*$d+$n;$dএটি এখনও 37-এর চেয়ে কম, এবং এখানে যুক্তিযুক্তভাবে একই প্যাটার্নটি অনুসরণ করে।
অ্যাডমবর্কবার্ক

ওঁ হ্যাঁ, শুধু গণিত! (পার্ল
উত্তরটিও

3

দশ ফুট লেজার মেরু সহ জাভা 1.03, 79 + 25 (আমদানি) = 104 বাইট

প্রয়োজন import sj224.tflp.math.*;

String m(String[]a){return ""+new BigRational(a[0]).add(new BigRational(a[1]));}

এটি প্রায় অবশ্যই 1.04 এর সাথেও কাজ করবে তবে এখন পর্যন্ত আমি এটি কেবল 1.03 দিয়ে পরীক্ষা করেছি কারণ ইতিমধ্যে আমি একটি জাভা প্রকল্পের নির্মাণের পথে 1.03 দিয়ে সেট আপ করেছি।


3

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

m=>([x,y,z]=m.match(/\d+/g),+y+x*z+"/"+z)

সংরক্ষিত 3 বাইট @ETH প্রডাকশন ধন্যবাদ !

ব্যাখ্যা

খুব সহজ.

m=>
  ([x,y,z]=m.match(/\d+/g), // x, y and z = numbers from input
    +y+x*z                  // numerator
    +"/"+z                  // denominator
  )

পরীক্ষা

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


নিস! আপনি ব্যবহার করতে পারেন [p,q,r]=স্থানে p=, তারপর প্রতিস্থাপন p[0], p[1]এবং p[2]সঙ্গে p, qএবং rযথাক্রমে। এই পরিবর্তনের পরে, আমি 41 m=>([p,q,r]=m.match(/\d+/g),+q+p*r+"/"+r)
পেয়েছি

টিপসটির জন্য ধন্যবাদ! আমি আসলে একটি ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট ব্যবহার করে বিবেচনা করেছি কিন্তু তারা ক্রোমে কাজ করে না এবং এটি পরীক্ষা করার জন্য আমার কাছে ফায়ারফক্স নেই। : পি
ব্যবহারকারী 81655

আমার প্রথম ছাড়িয়ে গেছে 44! : ডি
ব্যবহারকারী 81655

m.split(/\W/g)পরিবর্তে আপনি একটি বাইট সংরক্ষণ করতে ব্যবহার করতে পারেন
ক্রিটিকি লিথোস

2

জুলিয়া, 58 50 বাইট

s->eval(parse((r=replace)(r(s," ","+"),"/","//")))

এটি একটি বেনাম ফাংশন যা একটি স্ট্রিং গ্রহণ করে এবং কোনও Rationalটাইপ অবজেক্ট দেয়। এটি কল করার জন্য, এটির একটি নাম দিন f=s->...

আমরা ইনপুটটি একটি যুক্তি হিসাবে মূল্যায়ন করে এমন একটি অভিব্যক্তি হতে কিছুটা ম্যানিপুলেট করা যেতে পারে তার সুবিধা নিতে পারি। বিশেষত, একটি পূর্ণসংখ্যা এবং যুক্তি একটি যুক্তিযুক্ত, এবং যুক্তিগুলি ডাবল স্ল্যাশ দ্বারা চিহ্নিত করা হয়। সুতরাং আমরা যদি পরিণত 4 1/2হয় 4+1//2, মূল্যায়ন ফলাফল হবে 9//2

Ungolfed:

function f(s::AbstractString)
    # Replace the space in the input with a plus
    r1 = replace(s, " ", "+")

    # Replace the / with //
    r2 = replace(r1, "/", "//")

    # Parse the resulting expression as a rational
    return eval(parse(r2))
end

2

ছোট্ট টাল - 76 টি অক্ষর

ইনপুট হ'ল অ্যারে ডিলিমিটার এবং স্মলটালকের অন্তর্নিহিত ভগ্নাংশ উপস্থাপনের সাথে মেলে। এটি যদি কেবল ভারবস না হত তবে এটি মারাত্মক প্রতিযোগী হতে পারত!

Compiler evaluate:'|p|p:=0.#(',FileStream stdin nextLine,')do:[:q|p:=p+q].p'

এটি খুব খারাপ সরলীকরণের প্রয়োজন ছিল না, স্মার্টটাক এটি স্বয়ংক্রিয়ভাবে করে!


2

বাশ + কোর্টিলস, 28

dc<<<${@/\// }sarla*+n47Plap

$@সমস্ত কমান্ড-লাইন প্যারামিটারগুলিতে ${@/\// }প্রসারিত হয় , তাই /প্রতিস্থাপনযুক্ত সমস্ত কমান্ড-লাইন প্যারামিটারগুলিতে প্রসারিত হয় , যা dcস্ট্যাকের উপর রাখা হয় । বাকিটি সাধারণ স্ট্যাক ম্যানিপুলেশন এবং পাটিগণিত।


2

Haskell, , 74 67 63 বাইট

r=read
f x|(a,(c,s:d):_)<-lex<$>lex x!!0=show(r a*r d+r c)++s:d

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

ব্যাখ্যা

এইচ.পি.উইজ যেহেতু আবিষ্কার করেছেন আমরা এখানে হ্যাস্কেলের লেক্সারটি স্ট্রিং এর অংশগুলিতে ভাঙ্গার জন্য ব্যবহার করতে পারি। (এর আগে আমি ব্যবহার span(>'/')করছিলাম) এবং লাইকোনি দেখিয়েছিলেন যে <$>ঠিক এর মতোই কাজ mapSndকরেData.Tuple

প্যাটার্ন গার্ডটি আমাদের কোডটিকে আমরা ব্যবহার করতে চাই এমন তিনটি সংখ্যায় বিভক্ত করে lexlexপ্রথম টোকেনটি ভেঙে ফেলার জন্য হাস্কেলের লেক্সারকে অনুরোধ জানায়। এটি স্ট্রিংকে বিশ্লেষণের সম্ভাব্য উপায় উপস্থাপন করে প্রতিটি উপাদান সহ একটি তালিকা দেয় returns এই উপাদানগুলি প্রথম উপাদানটি প্রথম টোকেন এবং বাকী স্ট্রিং দ্বিতীয় উপাদান হিসাবে টিপলস হয়। এখন যেহেতু ইনপুট ফর্ম্যাটটি খুব নিয়মিত আমাদের কেবলমাত্র একটি পার্স হতে চলেছে তাই আমরা সর্বদা প্রথমটি নিতে পারি। আমরা প্রথমে lexযেটি করি তা হ'ল ইনপুটটি চাওয়া

lex x

তারপরে আমরা এটির তালিকা থেকে এটি মোছা করি আমাদের একটি 2-টিউপল দেয়

lex x!!0

প্রথম টোকেনটি মিশ্র ভগ্নাংশের পুরো অংশটি ভগ্নাংশটি একটি স্থান দ্বারা স্থির করে এখনও বিশ্লেষণ করতে থাকবে। তারপরে টিউপলস হওয়ায় আমরা টিউপের দ্বিতীয় উপাদানটি প্রয়োগ করতে একটি উপকরণ Functorsব্যবহার করতে পারি ।(<$>)fmaplex

lex<$>lex x!!0

এটি স্পেসের মধ্য দিয়ে খায় এবং আমাদের ভগ্নাংশের অঙ্কের পরবর্তী টোকেনটি ভেঙে দেয়। এখন আমরা এটি ব্যবহার করে একটি প্যাটার্ন ম্যাচে আবদ্ধ করি <-। আমাদের প্যাটার্ন হয়

(a,(c,s:d):_)

aভগ্নাংশের পুরো অংশটি ধরে ফেলবে, আমাদের প্রথম টোকেন। :_আমাদের দ্বিতীয় থেকে ফলটি তালিকার আনপ্রেপ করে lexcআমরা যে টোকেনটি দিয়েছিলাম তা দ্বিতীয় টোকেন ধরে, এটিই ভগ্নাংশের অঙ্ক n যা থেকে যায় তা আবদ্ধ হয় s:dযা এটিকে তার প্রথম চরিত্রে বিভক্ত করে, এটিকে বিন্যাসের গ্যারান্টিযুক্ত/ এবং বাকীটি হবে যা ডিনোমিনেটর হবে।

এখন আমরা যে ইনপুটটি পার্স করেছি তা আমরা প্রকৃত গণনা করি:

show(r a*r d+r c)++s:d

rআমরা আগে আবদ্ধ ফাংশন কোথায় ।

এটি লক্ষ্য করা জরুরী যে lexএটি একটি তালিকা ব্যর্থ হলে খালি এবং যদি সফল হয় তবে খালি নয় এমন ফিরিয়ে দেয়। কেন এটি Maybeআমি জানি না।



@ এইচপিউইজ এটি লেক্সের দুর্দান্ত ব্যবহার।
গম উইজার্ড


2
আপনি আরেকটি 2 রক্ষা করতে সক্ষম হওয়া উচিত উপর মিলে/
H.PWiz


1

জাভাস্ক্রিপ্ট ES6, 62 বাইট

p=prompt;b=p(a=+p()).split`/`;alert((+b[1]*a+ +b[0])+"/"+b[1])

1
খুব সুন্দর! কিছু টিপস: আপনি ব্যবহার করতে পারেন [b,c]=স্থানে b=, তারপর ব্যবহার bস্থানে b[0]এবং cস্থানে b[1]। এছাড়াও, আপনি সমীকরণটি পুনর্বিন্যস্ত করতে পারেন যাতে আপনার কোনও প্রথম বন্ধনী প্রয়োজন না: p=prompt;[b,c]=p(a=+p()).split/;alert(+b+c*a+"/"+c)
ETH প্রোডাকশনগুলি

1

পার্ল, 82 61 38 বাইট

#!perl -paF/\D/
$_=$F[0]*$F[2]+$F[1]."/$F[2]"

এটি সম্ভবত আরও গল্ফ করা যেতে পারে।

পরিবর্তনগুলি

  • ইন রিজেক্স ব্যবহার করে 16 বাইট splitএবং <>পরিবর্তে 5 ব্যবহার করে সংরক্ষণ করা হয়েছে<STDIN>
  • ডেনিসকে আরও 16 বাইট সংরক্ষণ করে Sa

শেবাং #!perl -paF/\D/(9 বাইট) দিয়ে আপনি ব্যবহার করতে পারেন $_=$F[0]*$F[2]+$F[1]."/$F[2]"
ডেনিস

@ ডেনিস আমি এটি যোগ করেছি। ধন্যবাদ!
ASCIIThenANSI

#!perlকুঁড়েঘর এবং লাইনফীড অংশ গণনা করা হয় না। এটি মাত্র 38 বাইট।
ডেনিস

@ ডেনিস ওহ, ঠিক আছে আমি এখন এটি সংশোধন করব। (উজ্জ্বল পক্ষে আমি মনে করি এটি দ্বিতীয় স্বল্পতম অ-রহস্যজনক উত্তর)
ASCIIThenANSI

1

গণিত, 51 বাইট

Interpreter["ComputedNumber"]@#~ToString~InputForm&

মজার বিষয় হল, ম্যাথমেটিকা ​​এটিকে বিল্ট-ইন দিয়ে সমর্থন করে। যদি কেবলমাত্র 28 বাইটের প্রয়োজন হয় তার চেয়ে যদি একটি সংখ্যা আউটপুট করার অনুমতি দেওয়া হয়:

Interpreter@"ComputedNumber"

1

জাভা, 159 148 142 120 110 বাইট

String m(String[]a){Long b=new Long(a[0]),d=new Long((a=a[1].split("/"))[1]);return b*d+new Long(a[0])+"/"+d;}

ফ্ল্যাগএএসস্পামকে ধন্যবাদ বাইটের একটি গুচ্ছ সংরক্ষণ করে।


@ ফ্ল্যাগএএসস্পাম সম্পন্ন হয়েছে।
সুপারজেডি ২৪

@ ফ্ল্যাগএএসপ্যাম তবে তবে ভেরিয়েবলগুলি অঘোষিত ছেড়ে যাবে!
সুপারজেডি ২৪

আমি যা বলেছি তার সবগুলিকে উপেক্ষা করুন - আপনি যা করছেন তা করার একটি স্বল্প উপায় হলLong b=new Long(a[0]),c=new Long((a=a[1].split("/"))[0]),d=new Long(a[1]);
অ্যাডিসন ক্রম্প

1

আমি পুরোপুরি নিশ্চিত যে "x y/z"এই নির্দিষ্ট চ্যালেঞ্জের জন্য ইনপুট ফর্ম্যাটটি বাধ্যতামূলক, তবে ঠিক যদি আমি ওপি কে যাচাই করতে বলেছি।
কেভিন ক্রুইজসেন

1

05 এ বি 1 ই , 17 15 বাইট

#`'/¡R`Š©*+®'/ý

-2 বাইটস @ ম্যাজিকঅ্যাক্টোপাস ইউরনকে ধন্যবাদ ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

#`         # Split input by spaces and push all items to the stack
           #  i.e. "4 1/2" → "4" and "1/2"
  '/¡      # Push the second item by "/"
           #  i.e. "1/2" → [1,2]
     R`    # Revert the list, and also push all items to the stack
           #  i.e. [1,2] → [2,1] → 2 and 1
Š          # Triple-swap the stack
           #  [4,2,1] → [1,4,2]
 ©         # Store the 2 in the register
  *        # Multiple the top two items
           #  4 and 2 → 8
   +       # Add the top two items
           #  1 and 8 → 9
®          # Push the 2 from the register to the stack again
 '/ý       # Join the two items by "/"
           #  9 and 2 → "9/2"

নমনীয় ইনপুট- এবং আউটপুট-বিন্যাসের সাথে, ক্রমে পূর্ণসংখ্যা গ্রহণ করা এবং মনোনীতকারী এবং x,z,yডিনোমিনেটরকে পৃথক লাইনে আউটপুট করা 4 বাইট হবে (যার কারণে আমি ট্যাগটিকে চ্যালেঞ্জের সাথে যুক্ত করেছি):

*+²»

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

*        # Multiply the first two inputs (x and z)
         #  i.e. 4 and 2 → 8
 +       # Add the third input (y)
         #  i.e. 8 and 1 → 9
  ²      # Take the second input again (z)
   »     # Join the stack by newlines and implicitly print it

@ ম্যাজিক অ্যাক্টোপাস ইউরন ধন্যবাদ, তবে ইনপুট-ফর্ম্যাট চ্যালেঞ্জের বর্ণনার চেয়ে আলাদা। স্পষ্টতই 4 1/2এই নির্দিষ্ট চ্যালেঞ্জের জন্য ফর্ম্যাট (একক স্ট্রিং হিসাবে) বাধ্যতামূলক। অন্যথায় আমি আমার 4-বাইট সংস্করণটি ব্যবহার করতাম (বা যদি আউটপুট বাধ্যতামূলক হত তবে ইনপুট নমনীয় আমি এই 6-বাইটারটি ব্যবহার করতাম *+'/²J))
কেভিন ক্রুইজসেন


@ ম্যাজিক অ্যাক্টপাস উরন, " স্ট্যাকের সমস্ত জিনিস পুশa " সম্পর্কেও জানতেন না .. ও.Ô ঠিক এই চ্যালেঞ্জের জন্য আমার কী প্রয়োজন! এবং "/" দ্বারা যোগদানের সাথে স্মার্ট। ধন্যবাদ! :)
কেভিন ক্রুইজসেন

"স্ট্যাকের মধ্যে সমস্ত আইটেম পুশ করুন" কমান্ডটি ব্যবহার করে আমি ঘৃণা করি কারণ এটি "` "এবং এটি ইনলাইন কোড-ট্যাগ দ্বারা চালানো যায় না।
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস উর্ন, এটি মন্তব্যেও কিছুটা বিরক্তিকর (যে কারণে আমি ব্যবহারের পরিবর্তে " স্ট্যাকের সমস্ত আইটেম পুশ করুনa " উদ্ধৃতি দিয়েছি '`'..
কেভিন ক্রুইজসেন


1

স্ট্যাক্স , 1 বাইট

+

এটি চালান এবং এটি ডিবাগ করুন (যদিও ডিবাগ করার মতো খুব বেশি কিছু নেই)

চ্যালেঞ্জের স্পেসিফিকেশন বলছে "আপনার আউটপুটটি সহজ করার দরকার নেই।" এটিকে সহজ করার অনুমতি দেওয়া হয়েছে তা ধরে নিলে স্ট্যাক্সে এটি করার জন্য একটি বিল্ট-ইন নির্দেশ রয়েছে। ইনপুট সুস্পষ্টভাবে একটি পূর্ণসংখ্যা এবং একটি মূলদ সংখ্যা হিসাবে ব্যাখ্যা করা হয়। +নির্দেশ উভয় rationals করার widens, যোগ করে, এবং সহজসাধ্য। ফলাফল সুস্পষ্টভাবে মুদ্রিত হয়।


1

পার্ল 5 -লা -মফেসের সাথে = বলুন, 32 বাইট 25 বাইট

m|/|;say$_*$'+$F[1],"/$'"

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

(-7 বম ডোম হেস্টিংসকে ধন্যবাদ)

$_পুরো ইনপুটটি x y/z, যা xসংখ্যাসঙ্গিত প্রসঙ্গে ( *এখানে এখানে এর মতো ) এর মূল্যায়ন করে । $'ম্যাজিক পোস্ট-পরবর্তী ম্যাচ স্ট্রিং, যা এখানে যা আসে তার পরে রয়েছে /- তাই z,। yমান পেতে , আমরা -aপতাকাটি ব্যবহার করি যা স্পেসগুলিতে ইনপুটটি বিভক্ত করে এবং এ্যারে রাখে @F। সুতরাং এখানে, @F = ("x", "y/z")যার অর্থ সংখ্যার প্রেক্ষাপটে $F[1]="y/z"মূল্যায়ন করে y(যেহেতু yঅঙ্কগুলির প্রাথমিক সঙ্গতিপূর্ণ অনুক্রম $F[1])।


-pআপনার বাইট গণনায় পতাকাটি গণনা করতে হবে না ; পরিবর্তে আপনি ভাষা হিসাবে গণনা Perl 5 with -p flag, 32 bytes। বর্তমান sens কমত্যের জন্য এই মেটা পোস্টটি দেখুন ।
জিউসেপ

চমৎকার পন্থা! আমি এইদিকে একটু যেতে পেরেছি এবং একটি 25 বাইট সংস্করণ তৈরি করতে পেরেছি: অনলাইনে চেষ্টা করে দেখুন! $'সত্যই সেখানে ব্যবহার করা ছিল আসল পার্থক্য!
ডম হেস্টিংস

রেজেেক্স- $'এবং -a- উভয়ই স্ট্রিংয়ের অংশগুলি ব্যবহারের সংমিশ্রণটি $F[n]বেশ ভাল ধারণা, আমাকে এটি মনে রাখতে হবে! ধন্যবাদ, পোস্ট আপডেট হয়েছে।
- মনিকা

0

লুয়া, 123 বাইট

m=io.read()z=string x=z.find c=z.sub b=tonumber s=x(m," ")f=x(m,"/")d=c(m,f+1)print(b(c(m,1,s))*b(d)+b(c(m,s,f-1)).."/"..d)

0

মিল্কিওয়ে 1.6.0 , 31 বাইট

'" "\="/"\=>;<A;A;:>*;A+"/"+<+!

ভেবেছিলাম তার চেয়ে অনেক বেশি দীর্ঘ হওয়া শেষ।


ব্যাখ্যা

'" "\="/"\=>;<A;A;:>*;A+"/"+<+!

'                                # read input from the command line
 " "  "/"               "/"      # push a string to the stack
    \    \                       # split the STOS at the TOS
     =    =                      # dump the TOS to the stack
           >       >             # rotate the stack rightward
            ;  ; ;   ;           # swap the TOS and STOS
             <              <    # rotate the stack leftward
              A A     A          # push the integer representation of the TOS
                  :              # duplicate the TOS
                    *            # multiply the STOS by the TOS
                       +   + +   # add the TOS and STOS
                              !  # output the TOS

ব্যবহার

./mw <path-to-code> -i <input>

0

পাইথন 2.7, 88 বাইট

a = ইনপুট ()। বিভক্ত ('/'); প্রিন্ট ইন (a [-1]) * int (a [0] .স্প্লিট () [0]) + int (a [0] .স্প্লিট () [1 ]), '/', একটি [1]

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

আপনাকে উদ্ধৃতিগুলিতে ইনপুট টাইপ করতে হবে।

সম্ভবত সেরা না ...



0

সি, 64

main(i,d,n){scanf("%d %d/%d",&i,&n,&d);printf("%d/%d",i*d+n,d);}

এসটিডিআইএন থেকে ইনপুট পড়ে। মোটামুটি স্ব-ব্যাখ্যামূলক, আমি মনে করি।


0

120 বাইট চেক করুন

>]+>:>32r#v
#d@0+\)  ##:>4;:>5'=:>48-\R-?
dd)R>32-#v
#>15-#v  #?
47r@>@   #v
#dd#v #?
r@>@     #v
    #\d@\: @*@+pd"/"op

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

আমি পার্সিং লুপ (দ্বিতীয় লাইন) পুনরায় ব্যবহার করার চেষ্টা না করে কিছু বাইট সংরক্ষণ করতে সক্ষম হতে পারি। এইভাবে আমি লুপটি আরও নির্দিষ্ট করে তুলতে পারি, শর্তাবলীর বিশাল জঞ্জাল এড়াতে পারি এবং অন্যান্য জিনিসের জন্য আমি নিবন্ধটি ব্যবহার করতে পারি।



0

সি #, 112 বাইট

s=>{string[]a=s.Split(),b=a[1].Split('/');int o=int.Parse(b[1]);return int.Parse(a[0])*o+int.Parse(b[0])+"/"+o;}

সম্পূর্ণ / ফর্ম্যাট সংস্করণ:

namespace System.Linq
{
    class P
    {
        static void Main()
        {
            Func<string, string> f = s =>
            {
                string[] a = s.Split(), b = a[1].Split('/');
                int o = int.Parse(b[1]);
                return int.Parse(a[0]) * o + int.Parse(b[0]) + "/" + o;
            };

            Console.WriteLine(f("4 1/2"));
            Console.WriteLine(f("12 2/4"));
            Console.WriteLine(f("0 0/2"));
            Console.WriteLine(f("11 23/44"));

            Console.ReadLine();
        }
    }
}



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