ভগ্নাংশটি কী অসাধারণ বাতিলকরণ ব্যবহার করে সরল করা যায়?


11

অস্বাভাবিক বাতিল (ওল্ফ্রাম আলফা থেকে):

অসামান্য বাতিল হ'ল a এবং b এর অঙ্ক এবং একটি ভগ্নাংশ a / b এর সংখ্যায় একটি "বাতিল" হয় যার ফলে ভগ্নাংশটি মূলের সমান হয়। মনে রাখবেন যে যদি সংখ্যা এবং ডিনোমিনেটরে এক বা একাধিক সংখ্যার একাধিক তবে পৃথক গণনা থাকে তবে কোন অঙ্কগুলি বাতিল করতে হবে সে সম্পর্কে দ্ব্যর্থহীনতা রয়েছে, সুতরাং এই জাতীয় কেস বিবেচনা থেকে বাদ দেওয়া সহজ। লিংক

সহজ কথায়, বলুন আপনার একটি ভগ্নাংশ রয়েছে a / b। আপনি যদি ভগ্নাংশে অঙ্কগুলি বাতিল করতে পারেন তবে অন্য একটি ভগ্নাংশ তৈরি করতে পারেনc / d মূলগুলি (মূল a / b = c / d) এর সমান অসাধারণ বাতিলকরণ ভগ্নাংশটি সরল করতে ব্যবহার করা যেতে পারে।

আপনার চ্যালেঞ্জটি এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করা যা ফর্মটিতে একটি ভগ্নাংশের স্ট্রিংকে ইনপুট করে a/bএবং আউটপুট দেয় বা সত্যবাদী মান প্রদান করে যদি ভগ্নাংশটিকে অসাধারণ বাতিলকরণের সাহায্যে সরল করা যায় এবং অন্যথায় একটি মিথ্যা মান value aএবং bসর্বদা শূন্য-ইতিবাচক পূর্ণসংখ্যার হবে। aএবং bসর্বদা দুটি বা ততোধিক অঙ্ক থাকবে। এছাড়াও, উভয়টিই aবা সমস্ত থেকে অঙ্কগুলি bবাতিল হয়ে যাবে না (আপনি ইনপুটটি পাবেন না 12/21), কমপক্ষে একটি ডিজিট থেকে aনেওয়া bহবে এবং প্রতিবার বাতিল হয়ে যাবে (আপনি ইনপুটটি পাবেন না 43/21), এবং শেষ ফলাফল কখনও 0হয় না aবা , আপনাকে অবশ্যই ক , ক , এবং ক বাতিল করতে হবেb । আপনার প্রোগ্রামটি অবশ্যই অবশ্যই ( aএবং এর মধ্যে) এর মধ্যে সমস্ত সাধারণ সংখ্যা বাতিল করতে হবেb1231/1234123 )। যদি বাতিল করার জন্য একাধিক সম্ভাবনা থাকে তবে প্রথমে বামতম সংখ্যাটি চয়ন করুন (৫১৫/২৫ হয়ে যায় ৫১/২ নয় ৫১/২)।

উদাহরণ:

Input      Output    Why

1019/5095  true      Remove the 0 and the 9 from both sides of the fraction to get 11/55, which is equivalent.
16/64      true      Remove the 6 from both sides, and get 1/4.
14/456     false     Remove the 4s. 14/456 is not equal to 1/56.
1234/4329  false     Remove the 2s, 3s, and 4s. 1234/4329 is not equal to 1/9.
515/25     false     Remove the first 5 from each side. 15/2 is not equal to 515/25.

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!


1
পুনঃনির্বেচনা: কোডগলফ.স্ট্যাকেক্সেঞ্জাওয়েশনস / সেকশনস / ৩779৯৯৪/২ ঘটনাক্রমে আমি ঠিক যে ম্যাথওয়ার্ল্ড এন্ট্রিটি দিচ্ছি তা হ'ল =)
flawr

আমি ইমপ্রেশনে ছিলাম 515/25 বাতিল হয়ে 103/5?
পুলগা

1
@ পুলগা সংখ্যার প্রথম 5 টি 5/15 এর সাথে ছেড়ে যাবে
অ্যালেক্স এ

@ পুলগা 11 এবং 55 কোনও সংখ্যা ভাগ করবেন না, সুতরাং এই পদ্ধতিটি ব্যবহার করে এটি আরও সরল করা যায় না। যাইহোক, সাধারণ ভগ্নাংশটি সরলকরণ ব্যবহার করে এটি হ'ল তবে এই চ্যালেঞ্জের মধ্যে আমরা কেবল অঙ্কগুলি বাতিল করছি।
গ্যামারকম্পস

43/21 এর উত্তর কী?
xnor

উত্তর:


3

পাইথ, 22 19 বাইট

তিনটি বাইটের জন্য @ আইস্যাককে ধন্যবাদ!

qFcMsMM,Jcz\/.-M_BJ

ব্যাখ্যা:

qFcMsMM,Jcz\/.-M_BJ      Implicit: z=input().
       ,                 two-element list
        Jcz\/              J = split z on ','
                _BJ      Bifurcate reverse: [J,reversed(J)]
             .-M         map multiset difference of elements in both lists
                             this gives the multiset difference both ways
       ,Jcz\/.-M_BJ      On input 1019/5095: [['1019','5095'], ['11','55']]
    sMM                  convert all strings to numbers
  cM                     map by float division
qF                       fold equality

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


1
m.-Fdগল্ফ করা যেতে পারে .-M। তেমনি, mcFsMdগল্ফ করা যেতে পারে cMsMM
isaacg

@isaacg আকর্ষণীয়; আমি ভাবছিলাম কেন .-FMকাজ হয়নি? সুতরাং Mস্বয়ংক্রিয়ভাবে অ পরমাণুসদৃশ্য ফাংশন উপর splats?
lirtosiast

2

𝔼𝕊𝕄𝕚𝕟, 17 অক্ষর / 34 বাইট

ïČ⍘/⎖0ⓢⓈë(ïę$)≔ëï

Try it here (Firefox only).

ব্যাখ্যা

ïČ⍘/⎖0ⓢⓈë(ïę$)≔ëï // implicit: ï = input fraction
ïČ⍘/⎖0              // get the numerator...
      ⓢ            // split it...
        Ⓢ          // and check if any of its items satisfy the condition:
          ë(ïę$)    // When the item is removed from ï,
                ≔ëï // does its fractional value still equal the original fractional value?
                    // implicit output

আমি এখন প্রায় দুই মাস ধরে রয়েছি it এটি এখনও আমার কাছে যাদু বলে মনে হচ্ছে। +1
ইটিএইচ প্রোডাকশনগুলি

2

রুবি, 95 76 বাইট

->a{x,y=a.split(?/).map &:chars;eval a+".0=="+(x-y).join+?/+(y-x).join+".0"}

ব্যাখ্যা

->a{                                                    # start of lambda
      a.split(?/)                                       # splits input fraction into numerator and denominator
                 .map &:chars;                          # converts them both into arrays of digits
  x,y=                                                  # assigns the numerator to x and the denominator to y

  eval                                                  # Evaluate...
       a+".0                                            # Original fraction with a .0 attached -- this forces floating-point division
            =="                                         # Equals...
               +(x-y).join                              # Numerator: Takes the relative complement of y in x (all elements in x that are not in y) and joins the resulting array into a string
                          +?/+(y-x).join                # Denominator: Takes the relative complement of x in y and joins the resulting array
                                        +".0"           # Add a .0 to force floating-point division
}

19 বাইট বন্ধ করে গল্ফ করার জন্য ডুরকনবকে প্রচুর ধন্যবাদ।


2

টিস্ক্রিপ্ট, 22 বাইট

xs`/`[0]M#E(xg(l))⌐E(x

এখন সমস্ত টি বাগ স্ক্রিপ্ট 3 এ আউট করা হয়েছে, এটি দুর্দান্তভাবে কাজ করে

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

পরীক্ষা স্যুট


আমি পেতে E is not defined
মামা ফান রোল

@ ɟ nɟuɐɯɹɐ ן ɯ হাহ, অদ্ভুত, এটি গিথুব থেকে কাজ করেছে ... আপডেট করা হচ্ছে ...
ডাউনগোট

দুর্দান্ত, এখন ভাল কাজ করে!
মামা ফান রোল

1

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

jtXUw'\d+'XXZ)2$XKtbm~)Kwtbm~)UwU/=

উদাহরণ

>> matl
 > jtXUw'\d+'XXZ)2$XKtbm~)Kwtbm~)UwU/=
 > 
> 1019/5095
1

>> matl
 > jtXUw'\d+'XXZ)2$XKtbm~)Kwtbm~)UwU/=
 >
> 14/456
0

ব্যাখ্যা

j              % input string
tXUw           % duplicate, convert to number, swap
'\d+'XX        % apply regexp to split at '/'
Z)             % separate cell array of strings into two strings
2$XK           % copy those two strings to clipboard K
tbm~)          % remove from denominator all chars present in the numerator
Kw             % paste both strings and swap      
tbm~)          % remove from numerator all chars present in the denoninator
UwU/=          % obtain value of "simplified" fraction and compare with original

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