क्या एक अंश को सरल निरस्तीकरण का उपयोग करके सरल बनाया जा सकता है?


11

विसंगति रद्द (वोल्फ्राम अल्फा से):

विसंगति रद्द एक अंश के a और b के अंको और b के अंको का "रद्द करना" होता है और a / b का भिन्न होता है जिसके परिणामस्वरूप मूल के बराबर अंश होता है। ध्यान दें कि यदि अंश और हर में एक या अधिक अंकों के कई लेकिन अलग-अलग मायने हैं, तो अस्पष्टता है कि किस अंक को रद्द करना है, इसलिए ऐसे मामलों को विचार से बाहर करना सबसे सरल है। संपर्क

सरल शब्दों में, मान लें कि आपके पास एक अंश है a / b। यदि आप भिन्न में अंकों को रद्द कर सकते हैं तो एक और अंश बनाने के c / dलिए जो मूल ( a / b = c / d) के बराबर है , अंश को सरल बनाने के लिए विसंगति रद्द किया जा सकता है।

आपकी चुनौती एक प्रोग्राम या फ़ंक्शन बनाने की है, जो फॉर्म में एक अंश स्ट्रिंग को इनपुट करता है a/bऔर आउटपुट करता है या एक सत्य मान लौटाता है अगर अंश को सरल रद्द करने का उपयोग करके सरल किया जा सकता है, और एक मिथ्या मूल्य अन्यथा। aऔर bहमेशा गैर-शून्य सकारात्मक पूर्णांक होंगे। aऔर bहमेशा दो या अधिक अंक होंगे। इसके अलावा, या तो से अंकों के सभी aया bरद्द नहीं की जाएगी (आप इनपुट मिल नहीं होते 12/21कम से कम एक अंकों से), aऔर bहर बार (आप इनपुट प्राप्त नहीं होते रद्द कर दिया जाएगा 43/21), और अंतिम परिणाम कभी नहीं होगा 0या तो के लिए aया b। आपका कार्यक्रम के बीच सभी आम अंक को रद्द करना होगा aऔर b(यानी। में1231/1234, आपको 12, और ए को रद्द करना होगा 3। यदि रद्दीकरण के लिए कई संभावनाएं हैं, तो पहले बाईं ओर का अंक चुनें (515/25 15/2 नहीं 51/2 हो जाता है)।

उदाहरण:

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
पुनरावर्ती: codegolf.stackexchange.com/questions/37794/… संयोगवश मैंने सटीक गणित की प्रविष्टि दर्ज की है जिसे आप उद्धृत कर रहे हैं =)
त्रुटी

मैं ५१५/२५ कैंसिल १०३/५ पर छापा था?
पुलगा

1
@ पुल्गा अंश में पहले 5 को हर में 5 के साथ रद्द कर देंगे, 15/2 छोड़कर।
एलेक्स ए।

@Pulga 11 और 55 किसी भी अंक को साझा नहीं करते हैं, इसलिए इसे इस पद्धति का उपयोग करके अधिक सरल नहीं किया जा सकता है। हालांकि, सामान्य अंश का सरलीकरण करते हुए, यह मामला होगा, लेकिन इस चुनौती में हम केवल अंकों को रद्द कर रहे हैं।
गेमक्रॉप्स

43/21 का जवाब क्या है?
xnor

जवाबों:


3

पायथ, 22 19 बाइट्स

तीन बाइट्स के लिए @isaacg को धन्यवाद!

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

@ लिसाक दिलचस्प; मैं सोच रहा था कि .-FMकाम क्यों नहीं किया। तो Mगैर-राजकीय कार्यों पर स्वचालित रूप से विभाजन?
lirtosiast

2

S, 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

मुझे अब दो महीने हो चुके हैं, और यह अभी भी मुझे जादू की तरह लग रहा है। +1
ETHproductions

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
मामा फन रोल

@ H n ,uɐɯɹɐ ɯ oɯ हुह, अजीब, यह गितुब से काम किया ... अपडेट ...
डाउनगोत

महान, यह अब ठीक काम करता है!
मामा फन रोल

1

MATL , 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.