বিপরীত মডুলাস গণনা করুন


18

কাজটি:

দুটি প্রদত্ত মানের xযেখানে একটি মান আউটপুট দেয় ।a mod x = ba,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

এটি , তাই সর্বনিম্ন বাইটস জয়।


কোনও সমাধান না পাওয়া গেলে এটি ত্রুটি করতে পারে?
তালি

@ কনফিউজড এমআর_সি প্রযুক্তিগতভাবে এটি কোনও সমাধান নির্দেশ করে না, তাই হ্যাঁ।
গ্রাভিটন

উত্তর:


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 এটা ঠিক যে, সংজ্ঞা নেই curried , যা এটি মত কল করা আবশ্যক মানে (8)(3)কিন্তু সেখানে PPCG একটি ঐক্যমত্য যে অনুমোদিত হয় । যদিও আপনাকে এটির কোনও নাম দেওয়ার দরকার নেই।
eush77

1
@SteveBennett এটা এর ক্রীড়া-কৌতুক মনে করি আপনি কিভাবে 26 বনাম -15 কিছু কিন্তু একটি স্পষ্ট ঐক্যমত্য। সৌভাগ্য বিতর্ক করার চেষ্টা করছে।
eush77

1
@ স্টেভেনেট কীভাবে 55 থেকে 1 দুর্বল sensকমত্যের?
সাইওস

6

এমএটিএল , 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", এটি একটি বিগইন্টিজার করে তোলে।

modInverse(...) - বিপরীত মডুলো অপারেশন সম্পাদন করে।


জাভা 8, 70 বাইট

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

3

আর , 33 28 বাইট

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

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

-4 বাইট জারকো ডাবল্ডামকে ধন্যবাদ।

-1 বাইট জিউসেপিকে ধন্যবাদ।

NAকোনও সমাধান না হলে ফিরে আসে । টিআইওতে পিআরআর লাইব্রেরি ইনস্টল করা নেই, সুতরাং সেই লিঙ্কের কোডটি function(a,b)পরিবর্তে ব্যবহার করবে ।


pryr::f(which(a%%1:(a+1)==b)) 4 বাইট সংক্ষিপ্ত।
জেএডি

আপনি ব্যবহার করে অন্য একটি বাইটও বাদ দিতে পারেন match(b,a%%1:(a+1))যা NAঅনুপস্থিত মানের জন্য ফিরে আসে ।
জিউসেপে

1

জেলি , 11 10 বাইট

³%_⁴
r‘ÇÐḟ

দুটি ধনাত্মক পূর্ণসংখ্যার গ্রহণ এবং একটি সম্পূর্ণ প্রোগ্রাম aএবং এবং অন্তর্ভুক্তের bমধ্যে পূর্ণসংখ্যার সমাধানগুলির তালিকা মুদ্রণ করে ।min(a,b)+1max(a,b)+1

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


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
janrjan জোহানসেন

1

সি # (মনো সি # সংকলক) , 57 56 26 বাইট

রডের পাইথন উত্তর বন্দর -1 বাইটের জন্য ডাব্লুডাব্লু ধন্যবাদ।

-30 বাইটের জন্য কেভিন ক্রুইজসেনকে প্রচুর ধন্যবাদ।

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

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


1
সাইটে স্বাগতম! দেখে মনে হচ্ছে আপনি পরে স্থানটি সরিয়ে ফেলতে পারেন return
গম উইজার্ড

পিপিসিজিতে আপনাকে স্বাগতম! অপরিবর্তিত সি # উত্তরগুলির জন্য লাম্বদা ফাংশনটি ব্যবহার করা সর্বদা সেরা এবং সংক্ষিপ্ততম i=>{/*code here*/}) তবে এই ক্ষেত্রে, যেহেতু আপনার কাছে 2 ইনপুট রয়েছে, তাই অতিরিক্ত বাইট ( a=>b=>{/*code here*/}পরিবর্তে (a,b)=>{/*code here*/}) সংরক্ষণ করার জন্য এটি কার্য়িং ল্যাম্বদা ফাংশন হতে পারে । এছাড়াও, আপনি যদি আপনার চেকগুলির চারপাশে প্রথম বন্ধনী সরাতে পারেন। মোট, আপনার কোনও কার্যকারিতা পরিবর্তন না করে এটি a=>b=>a-b>b?a-b:a==b?a+1:0 26 বাইট
কেভিন ক্রুইজসেন

এছাড়াও, যদি আপনি এটি এখনো দেখা যায়, এর মধ্যে golfing <সমস্ত ভাষা> জন্য টিপস এবং C # golfing জন্য টিপস শক্তি উভয় আকর্ষণীয় মাধ্যমে পড়তে হবে। উপভোগকর তোমার থাকা! :)
কেভিন ক্রুইজসেন

টিপসের জন্য আপনাকে ধন্যবাদ, ভবিষ্যতে গল্ফ করার সময় আমি এগুলি মনে রাখব।
Epicness





0

অ্যাক্সিয়াম, 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])

এটি পরীক্ষা এবং পরীক্ষা

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

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

আরকে কে আর ওল দেয়। ভাগ্যক্রমে, তবে এই কাজের জন্য আমার কোনও (বিল্ট-ইনগুলি ছাড়া) ব্যবহার করার দরকার নেই।


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

ফিসফিসি ভি 2 , 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}> Input

>>>> 1²>> (3]²এনএন2>> 1²12

সাধারণত, অপারেটর লাইনগুলি কেবল সংখ্যা হিসাবে উল্লেখ হিসাবে রেফারেন্স হিসাবে কাজ করে, তবুও আপনি লাইনগুলি লক্ষ্য করে থাকতে পারেন >> L=2এবং >> L⋅R। এই দুটি মান Lএবং এবং R, Eachবিবৃতি সঙ্গে একযোগে ব্যবহৃত হয় । Eachবিবৃতি দুটি বা তিনটি আর্গুমেন্ট গ্রহণ করে আবার সংখ্যার উল্লেখ হিসাবে কাজ করে। প্রথম যুক্তি (উদাঃ 5) হ'ল একটি ফাংশন ব্যবহৃত অপারেটরের লাইনের একটি রেফারেন্স এবং বাকী যুক্তিগুলি অ্যারে হয় are আমরা তখন বারবার অ্যারে, যেখানে ওভার ফাংশন Lএবং Rফাংশনে বিন্যাসে বর্তমান উপাদান (গুলি) প্রতিনিধিত্ব উপর iterated হচ্ছে। উদাহরণ হিসাবে:

একজন=[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এক্স2একজন: =[1এক্স2]

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

>> Each 5 4বি: =[আমি%এক্স|আমিএকজন]একটি%একটি

>> Each 6 7বিসি: =[(আমি%এক্স)=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>> L⋅Rএকজনসিএকজনসি

আমি={0সিআমি=0একজনআমিসিআমি=1

তারপরে আমরা সমন্বিত একটি অ্যারের সাথে শেষ করি0এক্সY0>> {10}{0}


-1

সি #, 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 বা ততোধিক বাইট সংরক্ষণের জন্য অপ্রয়োজনীয় সাদা স্থান সরিয়ে ফেলুন
মিঃ এক্সকডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.