उलटे मापांक की गणना करें


18

काम:

xजहां a mod x = bदो दिए गए मानों के लिए एक मान आउटपुट करें a,b

कल्पना

  • aऔर bहमेशा सकारात्मक पूर्णांक होंगे
  • वहाँ हमेशा के लिए एक समाधान नहीं होगा x
  • यदि कई समाधान मौजूद हैं, तो उनमें से कम से कम एक आउटपुट।
  • अगर कोई समाधान नहीं है, कुछ भी नहीं या कुछ संकेत है कि कोई समाधान मौजूद नहीं है।
  • बिल्ट-इन की अनुमति है (अन्य गणितीय दृष्टिकोणों की तरह मज़ेदार नहीं)
  • आउटपुट हमेशा पूर्णांक होते हैं

उदाहरण

A, B >> POSSIBLE OUTPUTS

5, 2 >> 3
9, 4 >> 5
8, 2 >> 3, 6
6, 6 >> 7, (ANY NUMBER > 6)
8, 7 >> NO SOLUTION
2, 4 >> NO SOLUTION
8, 5 >> NO SOLUTION
10,1 >> 3, 9

यह , इसलिए सबसे कम बाइट्स जीतती हैं।


अगर कोई समाधान नहीं मिला तो क्या यह त्रुटि हो सकती है?
क्लैप

@ConfusedMr_C तकनीकी रूप से कोई समाधान नहीं दर्शाता है, इसलिए हाँ।
ग्रैविटॉन

जवाबों:


11

जावास्क्रिप्ट , 28 27 26 24 23 बाइट्स

a=>b=>(a-=b)?a>b&&a:b+1

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

false कोई समाधान नहीं दर्शाता है।

-1 धन्यवाद @ अरनौल


अच्छी तरह से किया और अच्छी तरह से गोल्फ।
झबरा

तो, इसे कॉल करने के लिए, आपको बाहरी फ़ंक्शन को एक नाम देने की आवश्यकता है, कहते हैं f=..., फिर कॉल करें f(8)(3)? यह एक छोटा सा धोखा लगता है? किसी फ़ंक्शन को कॉल करने का सामान्य तरीका होगा f(8,3), जिससे आपके फ़ंक्शन की परिभाषा लंबी हो जाएगी?
स्टीव बेनेट

3
@SteveBennett सच है, परिभाषा करी है , जिसका अर्थ है कि इसे बुलाया जाना चाहिए (8)(3), लेकिन पीपीसीजी पर एक आम सहमति है कि इसकी अनुमति है । हालांकि आपको इसे कोई नाम नहीं देना है।
eush77

1
@SteveBennett यह मनोरंजक है कि आप कैसे सोचते हैं कि 26 बनाम -15 कुछ भी है लेकिन एक स्पष्ट सहमति है। भाग्य विवाद करने की कोशिश कर रहा है।
eush77

1
@SteveBennett 55 से 1 एक कमजोर आम सहमति कैसे है?
साइयो

6

MATL , 6 बाइट्स

tQ:\=f

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

व्याख्या

आदानों पर विचार करें 8, 2एक उदाहरण के रूप।

t    % Implicit input. Duplicate                STACK: 8, 8
Q    % Add 1                                    STACK: 8, 9
:    % Range                                    STACK: 8, [1 2 3 4 5 6 7 8 9]
\    % Modulo                                   STACK: [0 0 2 0 3 2 1 0 8]
=    % Implicit input. Equality comparison      STACK: [0 0 1 0 0 1 0 0 0]
f    % Indices of nonzeros. Implicit display    STACK: [3 6]



3

ग्रूवी, 48 बाइट्स (बिल्ट-इन का उपयोग करके):

{a,b->Eval.me(a+"g").modInverse(Eval.me(b+"g"))}

Eval.me(...+"g") - Affixes "g" to the input, making it a BigInteger.

modInverse(...) - Performs the inverse modulo operation.


Java 8, 70 bytes

{a,b->return BigInteger.valueOf(a).modInverse(BigInteger.valueOf(b));}

3

R, 33 28 bytes

pryr::f(match(b,a%%1:(a+1)))

Try it online!

-4 bytes thanks to Jarko Dubbeldam.

-1 byte thanks to Giuseppe.

Returns NA if there is no solution. TIO doesn't have the pryr library installed, so the code at that link uses function(a,b) instead.


pryr::f(which(a%%1:(a+1)==b)) is 4 bytes shorter.
JAD

you can also drop another byte by using match(b,a%%1:(a+1)), which returns NA for a missing value.
Giuseppe


1

गणितज्ञ 36 बाइट्स

a_±b_:=Select[Range[9a],a~Mod~#==b&]

इनपुट:

5 ± 2
9 ± 4
8 ± 2
6 ± 6
8 ± 7
2 ± 4
8 ± 5
10 ± 1

आउटपुट:

{3}
{5}
{3, 6}
{7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, \
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, \
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54}
{}
{}
{}
{3, 9}

बाइनरी फॉर्म में इन विस्तारित ASCII ऑपरेटरों का उपयोग करते समय, उन्हें परिभाषित किए जाने पर सामने एक स्थान की आवश्यकता होती है, अन्यथा पार्सर एक त्रुटि फेंकता है। तो यह होना ही होगा a_ ±b_। लेकिन यह वैसे भी एक अनाम फ़ंक्शन के Casesबजाय उपयोग करने के लिए कम है Select:Cases[Range[9#],x_/;#~Mod~x==#2]&
मार्टिन एंडर

1

हास्केल , 33 बाइट्स

साथ क्रैश code.hs: out of memory (requested ??? bytes)अगर कोई समाधान (बार है कि इससे पहले कि TIO पर बाहर) है:

a!b=[x|x<-[b+1..],mod(a-b)x<1]!!0

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

एक गलती को उजागर करने के लिए अर्जन जोहान्सन पर धन्यवाद !


यह परीक्षण के मामलों के लिए गलत जवाब देता है जहां bविभाजन होता है a
अर्जन जोहान्सन

1

सी # (मोनो सी # कंपाइलर) , 57 56 26 बाइट्स

पोर्ट ऑफ़ रॉड का पायथन उत्तर। डब्ल्यूडब्ल्यू -1 के लिए धन्यवाद।

-30 बाइट्स के लिए केविन क्रूज़सेन को बहुत धन्यवाद।

a=>b=>a-b>b?a-b:a==b?a+1:0

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


1
Welcome to the site! It looks like you can removed the space after return.
Post Rock Garf Hunter

Welcome to PPCG! For non-recursive C# answers it's always best and shortest to use a lambda function (i=>{/*code here*/}). In this case however, since you have 2 inputs, it can be a currying lambda function to save an additional byte (a=>b=>{/*code here*/} instead of (a,b)=>{/*code here*/}). Also, you can remove the parenthesis around your if-checks. In total, without changing any of your functionality, it becomes a=>b=>a-b>b?a-b:a==b?a+1:0 26 bytes
Kevin Cruijssen

Also, if you haven't seen it yet, Tips for golfing in <all languages> and Tips for golfing in C# might both be interesting to read through. Enjoy your stay! :)
Kevin Cruijssen

सुझावों के लिए आप सभी का धन्यवाद, मैं भविष्य में गोल्फ खेलने के दौरान इन बातों को ध्यान में रखूंगा।
महाकाव्य





0

Axiom, 147 128 बाइट्स

g(a:PI,c:PI):Union(List PI,Stream INT)==(a<c=>[];r:=a-c;r=0=>expand((a+1..)::UniversalSegment INT);[b for b in divisors(r)|b>c])

यह ungolf और परीक्षण

--a%b=c return all possible b
f(a:PI,c:PI):Union(List PI, Stream INT)==
    a<c=>[]
    r:=a-c
    r=0=>expand((a+1..)::UniversalSegment INT)
    [b  for b in divisors(r)|b>c]

(3) -> [[i,j,g(i,j)] for i in [5,9,8,6,8,2,8,10] for j in [2,4,2,6,7,4,5,1]]
   (3)
   [[5,2,[3]], [9,4,[5]], [8,2,[3,6]], [6,6,[7,8,9,10,11,12,13,14,15,16,...]],
    [8,7,[]], [2,4,[]], [8,5,[]], [10,1,[3,9]]]
                                                      Type: List List Any

यह सभी समाधान भी अनंत सेट समाधान मिल जाएगा ...


0

पिप , 9 बाइट्स

a%,a+2@?b

कमांड-लाइन तर्क के रूप में दो नंबर लेता है। यदि कोई समाधान मौजूद नहीं है, तो सबसे छोटा समाधान या शून्य आउटपुट करता है। इसे ऑनलाइन आज़माएं!

व्याख्या

           a, b are cmdline args (implicit)
  ,a+2     Range from 0 up to but not including a+2
a%         Take a mod each of those numbers
           (Note that a%0 returns nil; it emits a warning, but only if warnings are turned on)
      @?b  Find the index of the first occurrence of b in this list, or nil if it doesn't occur
           Autoprint (implicit)

उदाहरण के लिए, के इनपुट के साथ 8और 2:

   a+2   10
  ,      [0 1 2 3 4 5 6 7 8 9]
a%       [() 0 0 2 0 3 2 1 0 8]

2इस सूची में पहली घटना का 0-आधारित सूचकांक है 3, जो कि हमारा समाधान है।


0

जे , 14 बाइट्स

(->]){-,~=*1+]

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

रॉड के पायथन 2 समाधान का अनुवाद ।

यह काम किस प्रकार करता है

दुर्लभ मामले जहां एक जे कोड को सीधे पायथन में अनुवादित किया जा सकता है।

(->]){-,~=*1+]  <=>  [(a==b)*(1+b),a-b][a-b>b]
         =*1+]        (a==b)*(1+b)
      -,~            [            ,a-b]
     {                                 [     ]
(->])                                   a-b>b





0

ORK , 566 बाइट्स

When this program starts:
I have a inputter called I
I have a number called a
I have a number called b
I is to read a
I is to read b
I have a mathematician called M
M's first operand is a
M's second operand is b
M is to subtract
I have a number called n
n is M's result
M's first operand is b
M's second operand is n
M is to compare
I have a scribe called W
If M says it's less then W is to write n
If M says it's less then W is to write "\n"
M's second operand is a
M is to compare
If M says it's equal then W is to write a
If M says it's equal then W is to write a

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

हे bjects आर कश्मीर ool। सौभाग्य से, हालांकि, मुझे इस कार्य के लिए किसी भी (अंतर्निहित के अलावा) का उपयोग करने की आवश्यकता नहीं थी।


0

एफ #, 40 बाइट्स

let m a b=Seq.find(fun x->a%x=b){1..a+1}

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

बहुत सीधा। System.Collections.Generic.KeyNotFoundExceptionयदि कोई समाधान नहीं मिल रहा है तो फेंकता है ।

आप इसे संशोधित भी कर सकते हैं Seq.tryFind, जो कि एक रिटर्न देगा int option, Noneअगर कोई समाधान नहीं मिल सकता है।




0

> <> , 21 बाइट्स

सबसे पोस्ट समाधान के रूप में एक ही चाल। सबसे पहले, हम स्टैक पर सभी आवश्यक मान तैयार करते हैं और फिर तुलना की जांच करते हैं।

::r::{-:{)?nr=?!;1+n;

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


0

व्हिस्पर v2 , 128 बाइट्स

> Input
> Input
>> 1²
>> (3]
>> 1%L
>> L=2
>> Each 5 4
>> Each 6 7
>> L⋅R
>> Each 9 4 8
> {0}
>> {10}
>> 12∖11
>> Output 13

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

सभी संभव समाधान का एक सेट लौटाता है, और खाली सेट (यानी ) जब कोई समाधान मौजूद नहीं है।

यह काम किस प्रकार करता है

अप्रत्याशित रूप से, यह ज्यादातर अन्य उत्तरों के लिए लगभग समान रूप से काम करता है: यह संख्याओं की एक सूची बनाता है और तर्क के साथ उलटा मापांक के लिए प्रत्येक की जांच करता है।

यदि आप किस तरह से फुसफुसाते हैं, तो प्रोग्रामर संरचना कैसे काम करती है, बेझिझक आगे क्षैतिज रेखा पर छोड़ें। यदि नहीं: अनिवार्य रूप से, व्हिस्पर एक लाइन-बाय-लाइन संदर्भ प्रणाली पर काम करता है, जो अंतिम लाइन पर शुरू होता है। प्रत्येक पंक्ति को दो विकल्पों में से एक के रूप में वर्गीकृत किया गया है। या तो यह एक निलाद रेखा है , या यह एक परिचालक रेखा है

निलाद रेखाएँ शुरू होती हैं >, जैसे कि > Inputया > {0}उस रेखा पर दर्शाया गया सटीक मान लौटाएं या > {0}सेट लौटाएँ{0}> InputSTDIN की अगली पंक्ति लौटाता है, यदि संभव हो तो मूल्यांकन किया जाता है।

ऑपरेटर लाइनें शुरू होती हैं >>, जैसे कि >> 1²या >> (3]एक ऑपरेटर को एक या अधिक मानों पर चलाना। यहां, उपयोग किए गए नंबर उन स्पष्ट संख्याओं का संदर्भ नहीं देते हैं, इसके बजाय वे उस रेखा पर मूल्य का संदर्भ देते हैं। उदाहरण के लिए, ²वर्ग कमांड है (nn2), इसलिए >> 1²मान वापस नहीं करता है12इसके बजाय, यह लाइन 1 का वर्ग लौटाता है , जो इस मामले में, पहला इनपुट है।

आमतौर पर, ऑपरेटर लाइनें केवल संदर्भ के रूप में संख्याओं का उपयोग करके काम करती हैं, फिर भी आपने लाइनों >> L=2और पर ध्यान दिया हो सकता है >> L⋅R। इन दो मूल्यों, Lऔर R, Eachबयानों के साथ संयोजन में उपयोग किया जाता है । Eachबयान दो या तीन तर्क लेकर काम करते हैं, फिर से संख्यात्मक संदर्भ के रूप में। पहला तर्क (जैसे 5) एक फ़ंक्शन का उपयोग किए गए ऑपरेटर लाइन का एक संदर्भ है, और बाकी तर्क एरे हैं। हम तो सरणी, पर समारोह पुनरावृति जहां LऔरR समारोह में सरणियों में वर्तमान तत्व (रों) प्रतिनिधित्व करते हैं अधिक दोहराया जा रहा है। उदाहरण के तौर पे:

चलो =[1,2,3,4], बी=[4,3,2,1] तथा (एक्स,y)=एक्स+y। यह मानते हुए कि हम निम्नलिखित कोड चला रहे हैं:

> [1, 2, 3, 4]
> [4, 3, 2, 1]
>> L+R
>> Each 3 1 2

हम तब कैसे Eachकाम करते हैं का एक प्रदर्शन मिलता है । सबसे पहले, दो सरणियों के साथ काम करते समय, हम उन्हें बनाने के लिए ज़िप करते हैंसी=[(1,4),(2,3),(3,2),(4,1)] फिर नक्शा (एक्स,y) प्रत्येक जोड़ी पर, हमारे अंतिम सरणी का गठन डी=[(1,4),(2,3),(3,2),(4,1)]=[5,5,5,5]

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


यह कोड कैसे काम करता है

फुसफुसाते हुए काम करने के लिए काउंटर-सहजता से काम करना, हम पहले दो पंक्तियों से शुरू करते हैं:

> Input
> Input

यह हमारे दो इनपुट एकत्र करता है, जो कहता है एक्स तथा y, और उन्हें क्रमशः 1 और 2 लाइनों में संग्रहीत करता है । हम तो स्टोर करते हैंएक्स2लाइन 3 पर और एक सीमा बनाएँ: =[1एक्स2]लाइन 4 पर । अगला, हम अनुभाग पर जाते हैं

>> 1%L
>> L=2
>> Each 5 4
>> Each 6 7

पहली बात यह है यहाँ निष्पादित लाइन है 7 , >> Each 5 4है, जो लाइन iterates 5 लाइन पर 4 । इससे सरणी उत्पन्न होती हैबी: =[मैं%एक्स|मैं], कहाँ पे %के मापांक के रूप में परिभाषित किया गया है तथा

हम तो लाइन पर अमल 8 , >> Each 6 7है, जो लाइन iterates 6 से अधिकबी, एक सरणी उपज सी: =[(मैं%एक्स)=y|मैं]

इनपुट्स के लिए एक्स=5,y=2, हमारे पास है =[1,2,3,,23,24,25], बी=[0,1,2,1,0,5,5,,5,5] तथा सी=[0,0,1,0,0,,0,0]

हम फिर नीचे कूद पड़े

>> L⋅R
>> Each 9 4 8

जो हमारे देशद्रोही Eachकथन का उदाहरण है । इधर, हमारे समारोह लाइन है 9 यानी >> L⋅Rऔर हमारे दो सरणियों हैं तथा सी। हम प्रत्येक तत्व को गुणा करते हैं के साथ यह इसी तत्व में है सी, जो एक सरणी देता है, , जहां प्रत्येक तत्व निम्नलिखित संबंध से काम करता है:

मैं={0सीमैं=0मैंसीमैं=1

फिर हम एक सरणी के साथ समाप्त होते हैं 0s और व्युत्क्रम प्रतिरूप एक्स तथा y। को हटाने के लिए0s, हम इस सरणी को एक सेट ( >> {10}) में बदलते हैं, फिर इस सेट और के बीच के अंतर को लेते हैं{0}, उपज, फिर उत्पादन, हमारे अंतिम परिणाम।


-1

C #, 53 बाइट्स (फंक्शन हेडिंग के साथ 83)

static int F(int a, int b){
    for(int i=1;i<=a+1;i++){if(a%i==b)return i;}return 0;
}

यह ऑनलाइन की कोशिश करो

पहले कोडगोल्फ पर प्रयास करें। संभवतः उपयोग करने के लिए सबसे अच्छी भाषा नहीं, और न ही सबसे कुशल कोडिंग।


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