संबंधों को संवारना


11

3 धनात्मक पूर्णांक को देखते हुए a, bऔर n(जिसका अधिकतम मान अपनी भाषा में अधिकतम प्रदर्शनीय पूर्णांक मान रहे हैं), उत्पादन एक truthy मूल्य अगर a ≡ b (mod n), और falsey अन्यथा। उन लोगों के लिए जो अपरिचित संबंधों से अपरिचित हैं, a ≡ b (mod n)सच है iff a mod n = b mod n(या, समकक्ष, (a - b) mod n = 0)।

प्रतिबंध

  • अंतर्निहित अनुरूपता परीक्षण विधियां निषिद्ध हैं
  • बिल्ट-इन मोडुलो ऑपरेशन निषिद्ध हैं (इसमें पायथन के divmodकार्य जैसे ऑपरेशन शामिल हैं , जो भागफल और शेष दोनों के साथ-साथ विभाजन कार्य, अवशेष प्रणाली के कार्य और जैसे) लौटाते हैं

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

(1, 2, 3) -> False
(2, 4, 2) -> True
(3, 9, 10) -> False
(25, 45, 20) -> True
(4, 5, 1) -> True
(83, 73, 59) -> False
(70, 79, 29) -> False
(16, 44, 86) -> False
(28, 78, 5) -> True
(73, 31, 14) -> True
(9, 9, 88) -> True
(20, 7, 82) -> False

यह , इसलिए सबसे छोटा कोड (बाइट्स में) जीतता है, टाईब्रेकर के रूप में जल्द से जल्द प्रस्तुत किया जाता है।


विभाज्यता कार्यों के बारे में कैसे?
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ वे काम जो परीक्षण का काम करते हैं, इसलिए उन्हें भी मना किया जाता है। मैं स्पष्ट कर दूंगा।
मैगो

पायथन 2 के पूर्णांक मंजिल विभाजन के बारे में कैसे /?
xnor

फ्लोटिंग पॉइंट डिवीजन?
एल'एंडिया स्ट्रैटन

1
आधार रूपांतरण?
डेनिस

जवाबों:



4

पायथन 2, 27 बाइट्स

lambda a,b,n:(a-b)/n*n==a-b

चेक करता है कि a-bक्या nविभाजित करके एक से अधिक है n, जो स्वचालित रूप से फर्श करता है, और यह देखकर कि क्या गुणा करके वापस nसमान परिणाम देता है।


4

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

f(a,b,n,t=a-b)=t÷n==t/n

यह एक फ़ंक्शन है जो तीन पूर्णांक स्वीकार करता है और एक बूलियन देता है।

हम बस यह परीक्षण करते हैं कि क्या n द्वारा विभाजित a - b पूर्णांक n - b द्वारा विभाजित a - b फ्लोट के बराबर है । यह तब सच होगा जब विभाजन से शेष न रहे, अर्थात a - b | n , जिसका तात्पर्य है कि a - b (mod n ) = 0।


4

अजगर, 7 बाइट्स

!@UQ-FE

पायथ के चक्रीय अनुक्रमण का उपयोग करता है।

  UQ         range(first line). [0,...,Q-1]
    -FE      Fold subtraction over the second line.
 @           Cyclic index UQ at -FE
!            Logical NOT


3

मिंकोलंग 0.15 , 14 11 बाइट्स

nn-n$d:*=N.

यहाँ यह कोशिश करो! इनपुट के रूप में अपेक्षित है a b n

स्पष्टीकरण:

n              Take number from input -> a
 n             Take number from input -> a, b
  -            Subtract               -> a-b
   n           Take number from input -> a-b, n
    $d         Duplicate stack        -> a-b, n, a-b, n
      :        Integer division       -> a-b, n, (a-b)//n
       *       Multiply               -> a-b, (a-b)//n*n
        =      1 if equal, 0 otherwise
         N.    Output as number and stop.


3

रेटिना , २०

^(1+) \1*(1*) \1*\2$

इनपुट अनरी, स्पेस-सेपरेटेड, ऑर्डर में दिया गया है n a b। सत्य के लिए आउटपुट 1 और झूठी के लिए 0।

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


यदि आप दशमलव इनपुट पसंद करते हैं तो आप ऐसा कर सकते हैं:

\d+
$&$*1
^(1+) \1*(1*) \1*\2$

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


2

एपीएल, 15 बाइट्स

{(⌊d)=d←⍺÷⍨-/⍵}

यह एक dyadic समारोह है कि स्वीकार करता है n छोड़ दिया और पर एक और सही पर एक सरणी के रूप में।

यहाँ दृष्टिकोण मूल रूप से मेरे जूलिया उत्तर के समान है । हम परीक्षण करते हैं कि क्या a - b / n स्वयं के तल के बराबर है, जो कि a - b (mod n ) = 0 होने पर सही होगा ।


एक चार को बचाएं:d=⌊d←⎕÷⍨-/⎕
Adám

2

जावास्क्रिप्ट (ईएस 6), 27 बाइट्स

@ C @O'Bʀɪᴇɴ ने एक संस्करण पोस्ट किया जो काम नहीं करता है; यहां "सामान्य एल्गोरिथ्म" है जिसे लोग "कार्य" के रूप में उपयोग कर रहे हैं:

(a,b,n)=>n*(0|(a-b)/n)==a-b

शब्द "काम करता है" डराने वाले उद्धरणों में है क्योंकि हम जिस शॉर्टकट का उपयोग कर रहे हैं वह Math.floor()एक संख्या में हस्ताक्षरित 32-बिट रेंज में होने के लिए छोटा करता है, इसलिए यह पूर्ण 52-बिट या पूर्णांक के जो भी स्थान को हैंडल नहीं कर सकता है, वह जावास्क्रिप्ट कर सकता है वर्णन करते हैं।


यदि यह उत्तर भाषा के सभी प्रतिनिधित्व योग्य धनात्मक पूर्णांकों को संभाल नहीं सकता है, तो यह मान्य नहीं है।
मैंगो

1
@Mego: यह देखते हुए कि कुछ भाषाएँ 32-बिट पूर्णांक का उपयोग कर रही होंगी, मुझे लगता है कि प्रतिबंध तब तक मनमाने ढंग से होता है जब तक कि आप पूर्णांक की बिट-चौड़ाई या तो निर्दिष्ट नहीं करते हैं या फिर भाषा में शब्दचित्र होने चाहिए।
सीआर ड्रॉस्ट

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

@Mego: मुझे आपसे बिंदु-रिक्त पूछना चाहिए: क्या आप एक ही मानदंड पर हास्केल समाधान पर आपत्ति करने जा रहे हैं? (हास्केल समाधान बहुरूपिक है क्योंकि इसमें हस्ताक्षर नहीं है और यह इस तरह से नहीं लिखा गया है जो खतरनाक मोनोमोर्फिस्म प्रतिबंध को आमंत्रित करता है। सामान्य हस्ताक्षरित प्रकारों के लिए यह पूरी रेंज में पूरी तरह से अच्छी तरह से काम करता है; हालांकि इसमें इनपुट का एक सेट मौजूद है जो आप कर सकते हैं। पुट इन - एक परीक्षण सेट है (2, 150, 3) :: (Word8, Word8, Word8); आपके द्वारा निर्दिष्ट मानदंड स्पष्ट रूप से "यदि सैद्धांतिक रूप से एक इनपुट मौजूद है जो उत्तर को अमान्य बनाता है, तो उत्तर को अमान्य माना जाना चाहिए।")
सीआर ड्रॉस्ट

1
@Mego: यदि आप सोच रहे हैं कि मैं इसमें से एक बड़ा सौदा क्यों कर रहा हूं, तो जावास्क्रिप्ट संख्या प्रकार में 2 ^ 52-ईश फ्रिंज के आसपास नॉन-कॉन्टिनेंट पूर्णांक होते हैं, जिससे कि (a - b) == aकुछ निश्चित मानों के लिए यह बहुत संभव हो जाता है a। एक जवाब जो उन सीमा में मान्य बंद हो गया है लगभग असंभव है, भले ही मैं बाइट जुर्माना लेने के लिए और की जगह (0|...)के साथMath.floor(...).
सीआर Drost

2

सीजाम, 7 बाइट्स

l~-\,=!

इनपुट आदेश है n a b

इसका परीक्षण यहां करें।

व्याख्या

l~  e# Read input and evaluate to push n, a and b onto the stack.
-   e# Subtract b from a.
\,  e# Swap with n and turn into range [0 1 ... n-1].
=   e# Get (a-b)th element from that range, which uses cyclic indexing. This is
    e# equivalent to modulo, and as opposed to the built-in % it also works correctly
    e# for negative (a-b).
!   e# Negate, because a 0 result from the previous computation means they are congruent.

1

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

lambda a,b,n:pow(a-b,1,n)<1

pow(x,y,n)गणना करता है (x**y)%n, तो यह सिर्फ है (a-b)**1%n


1

ईएस 6, 28 बाइट्स

(a,b,n)=>!/\./.test((a-b)/n)

(Ab) / n में एक दशमलव बिंदु की तलाश में काम करता है, जिसकी मुझे आशा है कि अनुमति है।


1

गंभीरता से, 10 बाइट्स

,,,-A│\)/=

इनपुट के रूप में लेता है N\nA\nB\n(नए अक्षरों से अलग करने के लिए उपयोग किए जाने वाले बड़े अक्षर)।

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

यह @ अलेक्सा के उत्तर के समान विधि का उपयोग करता है

स्पष्टीकरण (व्याख्यात्मक उद्देश्यों के लिए चर नामों के रूप में उपयोग किए जाने वाले बड़े अक्षर):

,,,-A│\)/=
,,,         push N, A, B
   -A       push C = abs(A-B)
     │      duplicate entire stack (result is [N, C, N, C])
      \)/=  1 if C//N == C/N (floored division equals float division)

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