मिश्रित अंश समानता


15

प्राथमिक विद्यालय में, बच्चे उचित अंशों के बारे में सीखते हैं, जहां अंश भाजक से कम होता है, और इस प्रकार अंश का मान एक से कम होता है। बाद में, उन्हें उन अंशों के बारे में पढ़ाया जाता है, जहाँ अंश का मूल्य एक से अधिक होता है, और इन अंशों को व्यक्त करने के दो अलग-अलग तरीके हैं: मिश्रित अंश और अनुचित अंश।

मिश्रित अंश को देखते हुए, यह निर्धारित करें कि क्या यह अनुचित अंश के बराबर है जहां पूर्णांक मान और अंश एक साथ समेटे हुए हैं। उदाहरण के लिए, इनपुट के लिए, 1 3/4अनुचित अंश है 13/4

परीक्षण के मामलों

1 3/4        -> falsey
1 3/10       -> truthy
6 6/7        -> falsey
55 55/100    -> truthy
4 9/100      -> falsey
40 9/100     -> falsey
7 49/1000    -> falsey
9 1/2        -> falsey
999 999/1000 -> truthy
1 21/200     -> falsey
1 21/101     -> falsey

इनपुट के लिए, आप पूर्णांक भाग और भिन्न भाग को अलग-अलग इनपुट के रूप में ले सकते हैं, लेकिन आप अंश को दो टुकड़ों में इनपुट के रूप में नहीं ले सकते हैं, और आप इसे दशमलव मान के रूप में नहीं ले सकते हैं। यदि आपको इसका उपयोग करने की आवश्यकता नहीं है, तो आप पूर्णांक भाग को छोड़ सकते हैं (इसे इनपुट के रूप में नहीं लें)।


क्या अंश का सरलीकरण किया जाना चाहिए? जैसे चौथा परीक्षण मामला झूठा होगा जैसा कि 54/100सरल है27/50
Jo King

1
क्या आउटपुट दो अलग-अलग, सुसंगत मूल्यों या किसी भी, संभवतः असंगत, सत्य / गलत मूल्यों का होना चाहिए?
लुइस मेन्डो

1
वैसे, ४५ के टेस्ट केस को ५५ करने से यह मुद्दा नहीं बदलेगा - 55/100यह भी सरल हो सकता है 11/20, इसलिए एक ही सवाल @JoKing पर उठता है।
सूंदर -

3
"आप अंश को दो टुकड़ों में इनपुट के रूप में नहीं ले सकते हैं" - गलत क्यों? वास्तव में यही /करता है: /
जोनाथन एलन

11
यह "एक इनपुट दिया गया है, जो मायने नहीं रखता है और एक स्लैश द्वारा अलग किए गए स्ट्रिंग के रूप में दो संख्याओं के बराबर है, यह निर्धारित करता है कि क्या दूसरा नंबर पहले नंबर की लंबाई की शक्ति के बराबर 10 है"।
xnor

जवाबों:


8

Matl , 7 बाइट्स

UsGXzU=

इनपुट एक स्ट्रिंग है। आउटपुट है10 सत्य के लिए है , मिथ्या के लिए है।

इसे ऑनलाइन आज़माएं!या सभी परीक्षण मामलों को सत्यापित करें

व्याख्या

U     % Implicit input. Convert to number(s): gives a vector of two numbers
s     % Sum of that vector
G     % Push input again
Xz    % Remove spaces
U     % Convert to number
=     % Equal? Implicit display

8

पर्ल 6 , 16 12 बाइट्स

{1+$_==1~$_}

इसे ऑनलाइन आज़माएं!

अंश को दर्शाने वाले तार के रूप में इनपुट लेता है। पर्ल 6 की डायनामिक टाइपिंग से टकराहट को तर्कसंगत भिन्नों तक पहुँचाया जा सकता है, कौन जानता था? तो स्ट्रिंग"1/10" जब एक संख्या के लिए मजबूर, रिटर्न0.1

अनाम कोड ब्लॉक बस जांचता है कि क्या अंश प्लस एक अंश के साथ एक समतुल्य बराबर है। करने के लिए धन्यवादमुझे दिखाने xnor के पायथन जवाब के लिए कि पूर्णांक भाग कोई फर्क नहीं पड़ता।

पुराना घोल, 27 26 बाइट्स

{.nude[0]==.Int~[%] .nude}

इसे ऑनलाइन आज़माएं!

इनपुट को तर्कसंगत मिश्रित अंश के रूप में लेता है, और सही या गलत लौटाता है। चौथे टेस्ट केस के लिए गलत है क्योंकि यह सरलीकृत किया जा सकता है।

स्पष्टीकरण:

.nudeकी सूची देता है [numerator, denominator]

{                        } # Anonymous code block
 .nude[0]    # Check if the numerator of the mixed fraction
         ==  # Is equal to
           .Int  # The integer part of the fraction
               ~ # Concatenated to
                [%] .nude  # The numerator modulo the denominator
                           # And return implicitly

7
मैं अनुमान लगा रहा हूं कि एनयू मेटर + डे नामांकित व्यक्ति के .nudeलिए नाम दिया गया है , लेकिन किसी ने शायद इसे कॉल करने में सक्षम होने में बहुत आनंद लिया।
Οसथ जूल

1
मैं एक ऐसी चीज के साथ जाने वाला था जो इसे एक ही तार के रूप में ले गई थी'1 3/10' {S/\s//==.words.sum}
ब्रैड गिल्बर्ट b2gills

6

रेटिना 0.8.2 , 17 16 बाइट्स

(.)+/1(?<-1>0)*$

इसे ऑनलाइन आज़माएं! बस अंश भाग की आवश्यकता है, इसलिए लिंक किए गए परीक्षण सूट परीक्षण मामलों से पूर्णांक को हटा देता है। स्पष्टीकरण: अनुचित संयोजन केवल मिश्रित संख्या के बराबर होता है यदि भाजक 10 की शक्ति है और अंश भाजक में प्रत्येक शून्य के लिए एक अंक है। .NET के बैलेंसिंग समूहों का उपयोग यह सत्यापित करने के लिए किया जाता है कि पर्याप्त अंक मौजूद हैं। संपादित करें: @ बन्दर के लिए 1 बाइट का धन्यवाद सहेजा गया।


के लिए काम नहीं करता है 1 11/10। यह आपके कार्यान्वयन के साथ एक समस्या लगती है, विधि नहीं
H.PWiz

1
ध्यान दें कि "यदि आपको इसका उपयोग करने की आवश्यकता नहीं है, तो आप पूर्णांक भाग को छोड़ सकते हैं (इसे इनपुट के रूप में नहीं ले सकते)।" - यदि आप केवल अंश होने के लिए इनपुट बदलते हैं तो अग्रणी स्थान अनावश्यक हो सकता है।
सूंदर -

1
@ H.PWiz मुझे नहीं लगता कि हमें उन इनपुटों से निपटना होगा जहां अंश भाजक से अधिक होता है (क्योंकि इन्हें मिश्रित अंश माना जाता है केवल अंश के रूप में व्यक्त किए गए गैर-अभिन्न दशमलव भाग के साथ)। लेकिन मैं ओपी से यह पुष्टि करने के लिए कहूंगा।
सूंदर -

@ सूंदर मुझे इसे ^बदले में बदलना होगा , इसलिए यह मदद नहीं करता है।
नील

/, यह स्पष्ट है कि तुम क्या कर रहे हैं मिलान करता है तो मैं आप लंगर की जरूरत है वहाँ नहीं लगता कि (सामान्य रेगुलर एक्सप्रेशन मिलान नियमों से जा रहा है, कोई रेटिना विशेषज्ञता यहाँ)। वैसे भी काम करने लगता है: यह ऑनलाइन कोशिश करो!
सूंदर -



5

आर , 78 65 बाइट्स

function(n,e=function(a)eval(parse(t=sub(" ",a,n))))e("")==e("+")

इसे ऑनलाइन आज़माएं!

-13 बाइट्स दोनों Giuseppe और JayCe के लिए धन्यवाद!


1
बस subयहाँ ठीक है। इसके अलावा, आप उपयोग कर सकते हैं t=के बजायtext=
ग्यूसेप

1
मैं क्या कह सकता हूँ? प्रतिभाशाली! यह 65 बाइट्स
JayCe

@JayCe खुशी है कि मैं सही पृष्ठ पर था! धन्यवाद!
रॉबर्ट एस।

आप शायद 20 बाइट्स के लिए xnor के पायथन 3 का उत्तर देने की कोशिश कर सकते हैं ...
JayCe



4

पायथन 3 , 26 बाइट्स

lambda k:eval(k+'+1==1'+k)

इसे ऑनलाइन आज़माएं!

उदाहरण के लिए, इनपुट 3/4देता है 3/4+1==13/4। अंश के पूरे भाग को लेने के बजाय, हमने इसे 1मिश्रित अंश समानता का परीक्षण करने के लिए निर्धारित किया है । चास ब्राउन से परीक्षण के मामले।


4

ब्रेकीलॉग , 15 बाइट्स

ḍ{lᵛ&ht¬ị&t↔ị1}

इसे ऑनलाइन आज़माएं!

एक स्ट्रिंग इनपुट के रूप में अकेले आंशिक भाग लेता है।

परोक्ष रूप से मेरे जूलिया उत्तर के रूप में एक ही विचार का उपयोग करता है - "भाजक 10 ^ {अंश की लंबाई}" के रूप में कहा जा सकता है "भाजक दस की शक्ति है, और भाजक की लंबाई अंश की लंबाई के बराबर है + "/" (यानी 1) की लंबाई।

ḍ                   % split the input in half
 {            }     % and verify that
  lᵛ                % each half has the same length (i.e. the string had even length)
    &ht¬ị           % and the last character of the first half is 
                    %  not a number (it should be "/")
         &t↔ị1      % and the second half when reversed is the number 1
                    %  i.e. the denominator should be a power of 10

पुराना उत्तर:

15 20 बाइट्स

a₀ᶠịˢtl;10↺^.&a₁ᶠịˢh

इसे ऑनलाइन आज़माएं!

(-1 बाइट के लिए धन्यवाद @Fatalize, लेकिन दुर्भाग्य से +6 बाइट्स के बाद से मैंने पुराने तरीके से बग खोजा।)

मेरे जूलिया जवाब के रूप में एक ही विचार ।


1
Aआउटपुट वेरिएबल के साथ वेरिएबल को बदलकर आप इसे 1 बाइट से छोटा कर सकते हैं .(और इस तरह अंतिम हटा दें Aक्योंकि आउटपुट वैरिएबल अंत में वहां मौजूद है)
Fatalize

@Fatalize धन्यवाद, मैं भूल गया कि इन निर्णय समस्याओं में एक निशुल्क चर के रूप में आउटपुट बहुत अधिक उपलब्ध है। दुर्भाग्य से मुझे कोड में कीड़े मिले: क्योंकि यह केवल किसी भी संख्यात्मक उपसर्ग और किसी भी संख्यात्मक प्रत्यय के लिए पूछा था, यह चीजों को पास कर रहा था जैसे 61/10(केवल 6 अंश / उपसर्ग के रूप में) 2/110(केवल भाजक / प्रत्यय के रूप में 10 का उपयोग करके)। मैंने इसे ठीक करने की कोशिश की है, यह सुनिश्चित नहीं है कि यह सबसे अच्छा तरीका है, हालांकि।
सूंदर -

मुझे यकीन नहीं है कि मैं आपकी मदद कर सकता हूं क्योंकि मैं इस चुनौती के चश्मे को बिल्कुल भी नहीं समझता, भले ही इसे 3 बार पढ़ने के बाद। मुझे नहीं पता कि मेरे देश में "मिश्रित भिन्नों और अनुचित भिन्नों" को क्या कहा जाता है, या यहाँ के प्राथमिक विद्यालयों में भी पढ़ाया जाता है।
जूल

1
@ पर्याप्त मेला लगाओ। क्या आपको चैट रूम को पुनर्जीवित करने में रुचि है? यदि आप रुचि रखते हैं और आपके पास समय है, तो मेरे पास आपके साथ सवाल करने का एक गुच्छा है।
सूंदर -

ज़रूर, बस कमरे को पुनर्जीवित करने के लिए एक मॉड पूछें और जब आप सवाल पूछें तो मुझे टैग करें
घातक

3

जूलिया 0.6 , 29 बाइट्स

r->10^ndigits(num(r))==den(r)

इसे ऑनलाइन आज़माएं!

इस विचार के आधार पर कि आउटपुट केवल तभी सही होना चाहिए, जब भाजक दस की शक्ति हो, जिसमें कई शून्य हों जैसे कि अंश में अंक होते हैं। इनपुट को एक Rationalप्रकार के रूप में लेता है , जाँचता है कि भाजक अंक में अंकों की संख्या से 10 के बराबर है।


3

साफ , 57 बाइट्स

import StdEnv,Text
$b#[u,v:_]=split"/"b
=v==""<+10^size u

इसे ऑनलाइन आज़माएं!

यह एक छोटा सा है लेकिन बड़े अंश / हर के लिए टूट जाता है।

क्लीन , 77 61 60 58 बाइट्स

मेरे अन्य उत्तर पर OM on की टिप के लिए -1 धन्यवाद

import StdEnv,Text
$b#[u,v:_]=split"/"b
=1<+[48\\_<-:u]==v

इसे ऑनलाइन आज़माएं!

यह नील की विधि का उपयोग करता है , यह सीधे करने से थोड़ा छोटा है।
रूपांतरण से अधिक भार है, जहां के साथ कुछ प्रवंचना है 1<+[48\\_<-:u]धर्मान्तरित [Int]करने के लिए [Char]और उसके बाद करने के लिए {#Char} (:== String)है, लेकिन Intसीधे करने के लिए String

क्लीन , 91 89 बाइट्स

import StdEnv,Text
t=toInt
$a b#[b,c:_]=map t(split"/"b)
#d=t(a<+b)
=d/c==t a&&d-d/c*c==b

इसे ऑनलाइन आज़माएं!

एक फ़ंक्शन को परिभाषित करता है $ :: String String -> Boolजो अंश और हर को निकालता है, स्ट्रिंग पूर्णांक भाग और अंश को समेटता है, और तुल्यता की जांच करता है।


3

05AB1E , 7 बाइट्स

'/¡ćg°Q

केवल अंशों को इनपुट के रूप में लेता है।

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

'/¡        # Split the input by '/'
           #  i.e. '3/10' → ['3', '10']
   ć       # Head extracted:
           #  i.e. ['3', '10'] → 10 and 3
    g      # Take the length of the numerator
           #  i.e. '3' → 1
     °     # Take 10 to the power of this length
           #  1 → 10**1 → 10
      Q    # Check if that value equals the denominator
           #  10 and 10 → 1 (truthy)

या अधिक सामान्य विवरण:

हमें दो चीजों को मान्य करना होगा:

  • हर का कारक 10 ( 1, 10, 100, 1000, आदि) है?
  • क्या अंश + 1 की लंबाई हर की लंबाई के बराबर होती है?
    • यह दूसरा भाग यह जाँचने के द्वारा किया जाता है कि क्या भाजक है, जो अंश की लंबाई की शक्ति के 10 के बराबर है, जो 2 बाइट्स बचाता है

पुनश्च: यदि हम अंश और हर को अलग-अलग इनपुट के रूप में ले सकते हैं, तो बस 3 बाइट्स पर्याप्त होंगे g°Q:।


3

जावास्क्रिप्ट, 26 बाइट्स

करी सिंटैक्स में इनपुट लेता है ( f(x)(y)) जहां xपूर्णांक है और yएक स्ट्रिंग के रूप में अंश है।

x=>y=>x==eval(x+y)-eval(y)

इसे ऑनलाइन आज़माएं


3

जावा 10, 107 70 67 57 बाइट्स

f->new Long(f.split("/")[1])==Math.pow(10,f.indexOf("/"))

बिना दुनिया में आपका स्वागत है eval।।

-40 बाइट्स @ChasBrown के पायथन 2 उत्तर का पोर्ट बनाकर ।
-10 बाइट्स की बदौलत @Shaggy (मुझे @ChasBrown का जवाब बेहतर तरीके से पढ़ना चाहिए और उसका उपयोग ) find( indexOf))

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

f->                         // Method with String parameter and boolean return-type
  new Long(f.split("/")[1]) //  Take the denominator as integer
  ==Math.pow(10,            //  And check whether it is equal to 10 to the power of:
                f.indexOf("/"))
                            //   the length of the numerator-String


@ शैगी आह, च्स ब्राउन ने भी पायथन 2 में वही जवाब दिया है जो मैंने जोड़ा है .. यकीन नहीं कि मैंने पहले ही इसका उपयोग क्यों नहीं किया .. धन्यवाद!
केविन क्रूज़सेन


2

पर्ल 5- पी, 23 बाइट्स

$_=eval=~s/..//r eq$_+0

इसे ऑनलाइन आज़माएं!

भिन्नात्मक भाग को इनपुट के रूप में अकेले लेता है (जैसा कि ओपी द्वारा अनुमति है), सच के लिए 1 आउटपुट और झूठे के लिए कुछ भी नहीं है।

$_=       # assign to be printed by -p
eval      # evaluate fraction to get 0.something, for eg. 0.54
=~s/..//r # remove the 0. part, giving 54
 eq       # string equality check
$_+0      # after first coercing input to number to remove / and denominator

स्वयं द्वारा लिया गया दशमलव भाग केवल अंश के बराबर होगा, जब भाजक अंश की तुलना में दस की तत्काल अगली शक्ति है, यही वह स्थिति है जिसकी हमें जांच करने की आवश्यकता है।


2

नोथर, 17 बाइट्स

I#I"/"^WL1-%WL_=P

इसे ऑनलाइन आज़माएं!

व्याख्या

यह कैसे काम करता है? ठीक है, यदि आप परीक्षण के मामलों को देखते हैं, तो एकमात्र सच्चे मामले हैं जब भाजक दस की शक्ति है,10, कहाँ पे अंश की लंबाई प्लस एक है (=लॉग10n+1, कहाँ पे n अंश है और एक्स फर्श समारोह का प्रतिनिधित्व करता है)।

I#                - Push the first input then pop it off the stack
  I"/"^           - Push the second input and split the string at "/"
       W          - Convert the top (the denominator) of the stack from a string to a number
        L1-       - Take the log 10 of the top of the stack and subtract 1 (a)
           %      - Rotate the stack
            WL_   - Convert the top of the stack (the numerator) to a number, take the log10 and floor the result (b)
               =  - Check if a and b are equal
                P - Print the top of the stack


2

आर , 53 बाइट्स

function(n,x=el(strsplit(n,"/")))x[2]==10^nchar(x[1])

इसे ऑनलाइन आज़माएं!

इनपुट के रूप में केवल आंशिक भाग लेता है। जैसा कि एक टिप्पणी में xnor ने उल्लेख किया है:

ऐसा लगता है कि "एक इनपुट दिया गया है, जो दो अंकों के बराबर नहीं है और एक स्लैश द्वारा अलग किए गए स्ट्रिंग के रूप में दो नंबर, यह निर्धारित करता है कि क्या दूसरा नंबर पहले नंबर की लंबाई की शक्ति के बराबर 10 है"।

रॉबर्ट एस का जवाब कम गोल्फ वाला है, लेकिन मेरा उससे ज्यादा दिलचस्प है।


2

सी (जीसीसी) , 67 56 55 बाइट्स

m;x(char*_){for(m=1;*_++;m*=10)*_*=*_^47;m=m==atoi(_);}

इसे ऑनलाइन आज़माएं!


64 बाइट्स: tio.run/…
OOBalance

वास्तव में, क्या आपको भी ज़रूरत है r? tio.run/…
OOBalance

@Oobalance नहीं मैं नहीं। धन्यवाद।
जोनाथन फ्रेच

1

एक्सेल, 52 बाइट्स

=10^FIND("/",B1)/10-MID(B1,FIND("/",B1)+1,LEN(B1))=0

पूर्णांक इनपुट पर ध्यान नहीं देता। मूल रूप से:IS Denominator = 10^LEN(Numerator)


हर के लिए सीमित <10^9: 48 बाइट्स:

=10^FIND("/",B1)/10-MID(B1,FIND("/",B1)+1,1E9)=0

तर्कों का थोक पर विभाजन है /। यदि इनपुट अलग से लिया जा सकता है, 16 बाइट्स:

=10^LEN(B1)-C1=0



1

C (gcc / clang), 59 49 47 बाइट्स

f(a,b){a=atoi(b=strchr(a,47)+1)==pow(10,b+~a);}

पोर्ट ऑफ़ चास ब्राउन का पायथन 2 उत्तर । इसे ऑनलाइन आज़माएं यहाँ

इनपुट के पूर्णांक भाग को अनदेखा करता है। करने के लिए धन्यवाद जोनाथन फ्रेच को2 बाइट गोल्फिंग ।

Ungolfed:

f(a, b) { // function returning an int and taking a string as input; also declaring another string variable
          // this abuses the parameters as much as possible, omitting the type int and implicitly converting it to char *
    a =                             // return a truthy or falsey value based on
        atoi(b = strchr(a, 47) + 1) // the denominator (as integer; 47 is the ASCII code for '/')
        == pow(10, b + ~a);         // is equal to 10 to the power of the length of the numerator-string
}

'/'सबसे अधिक संभावना हो सकती है 47
जोनाथन फ्रेच


अच्छा आपका धन्यवाद!
OOBalance

आपका स्वागत है। मुझे लगता है कि आप नई बाइट गिनती को प्रतिबिंबित करने के लिए अपने हेडर को अपडेट करना भूल गए।
जोनाथन फ्रीच जूल

1

फोर्सलैंग, 86 78 बाइट्स

set a io.readnum()
set b io.readnum()
set d number.parse a+b+""
io.write d=a+b
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.