N এর QA চতুর্ভুজ অবশিষ্টাংশ?


22

প্রদত্ত দুটি ইনপুট q nনির্ধারণ করে যে এর qচতুর্ভুজটির অবশিষ্টাংশ কিনা n

অর্থাত্, xযেখানে সেখানে x**2 == q (mod n)বা qস্কোয়ার মোড আছে n?

ইনপুট

দুটি পূর্ণসংখ্যা qএবং n, যেখানে qএবং nকোনও পূর্ণসংখ্যা হয় 0 <= q < n

আউটপুট

সত্যবাদী বা মিথ্যা।

Allyচ্ছিকভাবে, xযে কোনও (বা সমস্ত) মুদ্রণ করুনx**2 == q (mod n)

উদাহরণ

>>> quadratic_residue(1, 5)
True
>>> quadratic_residue(3, 8)
False
>>> quadratic_residue(15, 22)
True

বিধি

আপনার কোড অবশ্যই একটি প্রোগ্রাম বা একটি ফাংশন হতে হবে। ইনপুটগুলি যে কোনও ক্রমে থাকতে পারে। এটি কোড গল্ফ, তাই বাইট জেতে সংক্ষিপ্ততম কোড।

যদি কিছু অস্পষ্ট হয় বা অন্যথায় ফিক্সিংয়ের প্রয়োজন হয় তবে দয়া করে আমাকে জানান।

বোনাসেস

  • 2-বাইট বোনাস যদি আপনার ফাংশনটি qযথেচ্ছ পূর্ণসংখ্যার হিসাবে গ্রহণ করে ।

তালিকা

var QUESTION_ID=65329;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=47581;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"http://api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang.toLowerCase(),user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw>b.lang_raw)return 1;if(a.lang_raw<b.lang_raw)return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table>


5
কিছু বিদ্যমান উত্তর এটি ধরে নিচ্ছে 0 <= q < n। এটি সম্ভবত গ্রহণযোগ্য ধারণা নয় তা আপনার স্পষ্ট করে দেওয়া উচিত।
পিটার টেলর

1
আমি দুটি পছন্দ qএবং পছন্দ nকরতে চাইতাম, তবে তাই আমি বিদ্যমান উত্তরগুলি 0 <= q < n
শেরলক 9

2
এই ক্ষেত্রে আমি বিদ্যমান উত্তরগুলিকে "ভাঙ্গা" যুক্তিযুক্ত যুক্তিযুক্ত বিবেচনা করতাম যে তারা বিদ্যমান অনুমান অনুসরণ করে না এবং আপনি কেবল স্পষ্ট করেই বলেছিলেন যে এটির পরিবর্তনের পরিবর্তে এটি যা বলেছিল তার অর্থ কী, তবে এখন অনেক দেরি হয়ে গেছে।
পিটার টেলর

স্বেচ্ছাসেবী গ্রহণের সমাধানের জন্য আপনি একটি ছোট বোনাস দিতে পারেনq
বাকুরিউ

উত্তর:


6

পাইথ, 9 বাইট

}Em%*ddQQ

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষা স্যুট

ব্যাখ্যা:

}Em%*ddQQ   implicit: Q = first input number
  m     Q   map all numbers d of [0, 1, ..., Q-1] to:
    *dd       d*d
   %   Q      mod Q
            this gives the list of all quadratic residues
 E          read another input number
}           check, if it appears in the list of quadratic residues

আমি ইনপুট হিসাবে 7 9 লাগানোর চেষ্টা করেছি, এবং এটি "ভুয়া" বলেছে, যদিও 7 টি 5 ^ 2 মড 9 এর সমান is
নিক মাত্তিও

@ কুন্ডর আমি বিপরীত ক্রমে পূর্ণসংখ্যা পড়ি। প্রথম nচেয়ে q। সুতরাং 9\n7ইনপুট হিসাবে চেষ্টা করুন।
জাকুব

8

গণিত, 25 বাইট

AtomQ@PowerMod[#,1/2,#2]&

ম্যাথামেটিকাল, ম্যাথামেটিকাল হচ্ছে, স্বাভাবিকভাবেই মডিউল n তম শিকড় গণক জন্য একটি builtin রয়েছে মাধ্যমে PowerMod। যদি কোনও সমাধান উপস্থিত থাকে তবে ক্ষুদ্রতম সম্ভাব্য সমাধানটি ফিরে আসে, অন্যথায় আসল প্রকাশ (প্লাস কোনও বার্তা)।

প্রকৃত সত্যবাদী / মিথ্যা আউটপুট পেতে আমরা ফলাফলটি পাস করি AtomQ, যা কোনও এক্সপ্রেশন ভেঙে যেতে পারে কিনা তা পরীক্ষা করে। পূর্ণসংখ্যাগুলি পারমাণবিক, প্রত্যাবর্তনশীল True, অ-পারমাণবিক PowerMod[q,1/2,n]রিটার্ন সহFalse

আমার সাথে গল্ফ টিপস এবং ফাংশন শিকারের জন্য @ মার্টিনব্যাটনারকে ধন্যবাদ।


বোকা যুক্তি অর্ডারিং
ক্যালকুলেটরফ্লাইন

কি?! আমি কখনই জানতাম না যে PowerModকোনও ভগ্নাংশের যুক্তি নিতে পারে!
গ্রেগ মার্টিন

8

পার , 11 9 বাইট

✶X[²x%)↔,

প্রতিটি চরিত্র একটি মাত্র বাইট ব্যবহার করে; দেখতে এখানে

ব্যাখ্যা

✶              ## Read two numbers
X              ## Assign second to x
[              ## Map
 ²             ## Square
 x%            ## Mod x
)              ## 
↔              ## Swap
,              ## Count

জাকুবকে ধন্যবাদ বলে দুটি বাইট অপসারণ করা হয়েছে।



5

হাস্কেল, 31 বাইট

মার্টিন বাটনারকে 3 বাইট সংরক্ষণ করা হয়েছে।

q#n=elem q[mod(x^2)n|x<-[1..n]]

1
এছাড়াও 31 বাইট: q#n=any(\x->mod(x*x)n==q)[0..n]এবং 30 বাইটের জন্য: q#n=[x|x<-[0..n],mod(x*x)n==q]যা সত্য / মিথ্যা পরিবর্তে এক্স / খালি তালিকার তালিকা দেয়।
নিমি

5

মতলব, ২৯

এই ফাংশনটি 0 থেকে n পর্যন্ত সমস্ত সংখ্যার স্কোয়ার করে এবং বর্গ বিয়োগ Q শূন্য Mod n কিনা তা পরীক্ষা করে।

@(q,n)any(~mod((0:n).^2-q,n))

4

প্রোলোগ (এসডাব্লুআই), 34 বাইট

কোড:

Q*N:-between(0,N,X),X*X mod N=:=Q.

ব্যাখ্যা: 0 এবং N এর
মধ্যে যে কোনও বর্গ Q কে N দ্বারা বিভক্ত করা হলে Q ছেড়ে যায় কিনা তা পরীক্ষা করে ।

উদাহরণ:

3*8.
false

15*22.
true

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


4

সিজেম, 11 বাইট

{_,2f#\f%&}

এই নামবিহীন ব্লকটি q nস্ট্যাকের উপরে প্রত্যাশা করে এবং স্ট্যাকের [q]উপরে সত্যবাদী মান বা মিথ্যা মান ""হিসাবে চলে।

এটি এখানে পরীক্ষা করুন।

Sp3000 কে ক্রেডিট যারা এই সমাধানটি নিয়ে এসেছিল তবে "পোস্টিং নিয়ে বিরক্ত হতে পারে না"।

ব্যাখ্যা

_,  e# Duplicate n and turn into range [0 1 ... n-1]
2f# e# Square each element in the range.
\f% e# Take each element in the range modulo n.
&   e# Set intersection with q to check if any square yields q (mod n).

4

জে, 9 বাইট

e.]|i.^2:

ব্যবহার:

   1 (e.]|i.^2:) 5
1
   3 (e.]|i.^2:) 8
0
   15 (e.]|i.^2:) 22
1

ব্যাখ্যা:

e.]|i.^2:
    i.    [0..N-1]
      ^   to the power of
       2: 2 (constant 2 function)
  ]|      mod N       
e.        contains Q? (0/1 result)

কিছু জে যান্ত্রিক ট্রিভিয়া:

ফাংশনগুলি 3 টি পুনরাবৃত্তভাবে ডান দিক থেকে ভাগ করা হয় এবং যদি একটি বাম থাকে তবে আমাদের ক্ষেত্রে ( e. (] | (i. ^ 2:))) এর মতো, গ্রুপযুক্ত অংশটিকে ডান আর্গুমেন্ট ( N) দিয়ে ডাকা হয় এবং বাম আউট ফাংশন ( e., "ধারণ করে") মূল বাম সাথে ডাকা হয় যুক্তি ( Q) এবং শ্রেণিবদ্ধ অংশের ফলাফল।

( e.]|i.*i.এবং e.]|2^~i.একই দৈর্ঘ্য সহ সমস্যা সমাধান করে))

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


3

গণিত, 27 বাইট

PowerModList[#,1/2,#2]!={}&

ব্যবহার:

In[1]:= PowerModList[#,1/2,#2]!={}&[1,5]

Out[1]= True

3

জাভাস্ক্রিপ্ট ES6, 42 বাইট

(q,n)=>[...Array(n)].some((x,y)=>y*y%n==q)

মারাত্মক বাইট সংরক্ষণের জন্য @ অ্যাপ্লিকেশনগুলিতে ক্রেডিট!


...Arrayসিনট্যাক্স কী ? আমি এখনও এটি পাই না।
টোমা জ্যাটো - মনিকা

আশা করি এই সম্পাদনাটি আপনার পক্ষে ভাল।
মামা ফান রোল

[...Array(5)]একা undefinedহিসাবে একই অ্যারে উত্পাদন করে Array(5)। আমি সম্পূর্ণ বিভ্রান্ত, কারণ অদ্ভুত বাক্যবিন্যাস অপসারণ এবং কেবল Array(5)কোডটি ভেঙে ফেলে। এর জন্য কি কোনও দলিল আছে? আমার কনসোলের স্ক্রিনশট
টম জ্যাটো - মনিকা

1
@ টোমজাটো Array(5)হ'ল একটি অ্যারে যা নিজস্ব সম্পত্তি ছাড়া বাদে length। অ্যারে-স্প্রেড [...x]সংখ্যাসূচক গুণাবলী পর্যন্ত পূরণ করে lengthmapফাংশন শুধুমাত্র অদ্যাপি বর্তমান সম্পত্তি, যার উপর অপারেট করতে পারে Array(5)একা নেই। উদাহরণস্বরূপ, চেষ্টা করুন Array(5).hasOwnProperty(0)(মিথ্যা) বনাম [...Array(5)].hasOwnProperty(0)(সত্য)।
অ্যাপসিলার 21

1
এছাড়াও, some(q,n)=>[...Array(n)].some((x,y)=>y*y%n==q)
ব্যবহারটি

2

গুরুতরভাবে , 20 বাইট

,;R@,;╗@%╝`ª╜@%╛=`MΣ

দুটি লাইনে ইনপুট নেয়: qতারপরে n। আউটপুট একটি 0যদি qএকটি দ্বিঘাত অবশিষ্টাংশ নয় n, অন্য একটি ধনাত্মক সংখ্যা প্রতিনিধিত্বমূলক কত xমধ্যে [1, q](সহ) সন্তুষ্ট x^2 = q (mod n)

অনলাইনে এটি ব্যবহার করে দেখুন (পারমলিক্সে আরও সমস্যা হচ্ছে তবে আপনি কোডটি অনুলিপি করে একটি ফাঁকা পৃষ্ঠায় পেস্ট করতে পারেন )

ব্যাখ্যা:

,;R      get q input, duplicate, push range(1, q+1)
@,;╗     move the list to the back of the stack, get n input, dupe, save in reg 0
@%╝      calculate q mod n and save to reg 1
`ª╜@%╛=` push this function:
  ª╜@%     square top of stack, push reg 0 value (n), swap, and mod
  ╛=       push reg 1 value (q mod n), compare equality (1 if equal else 0)
MΣ       map the function across the range, add results

2

পাইথন 3, 41 40 বাইট

লাগে qএবং nআর যদি নির্ধারণ করে qবর্গের তালিকার থেকে 0থেকে ছক n-1স্কোয়ারড।

lambda q,n:q in[i*i%n for i in range(n)]

2

রুবি, 33 31 বাইট

দুটি বাইট সংরক্ষণ করেছেন ভাসু আদারিকে ধন্যবাদ।

->q,n{(1..n).any?{|e|e*e%n==q}}

যথারীতি রুবি গল্ফিংয়ের কোনও ভাষাই হারাতে পারে না, তবে এটি এখানে দুর্দান্ত দেখায়।


আপনি ধনুর্বন্ধনী হারাতে এবং এটি করতে পারেন ->q,n{}
ভাসু আদারি

@ ভাসুআডারী শীতল, আমি এটি জানতাম না। ধন্যবাদ.
মনিকা iamnotmaynard

1

জুলিয়া, 30 বাইট

f(q,n)=q∈[i^2%n for i=0:n-1]

এটি এমন একটি ফাংশন fযা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি বুলিয়ান দেয়।

Ungolfed:

function f(q::Integer, n::Integer)
    # Generate an array of quadratic residues
    x = [i^2 % n for i = 0:n-1]

    # Determine whether q is one of these values
    return q  x
end

1

জাভাস্ক্রিপ্ট (ES6), 43 বাইট

(q,n)=>eval('for(x=n,r=0;x--;)r+=x*x%n==q')

ব্যাখ্যা

(q,n)=>
  eval(`              // eval allows us to use a for loop without {} or return
    for(x=n,r=0;x--;) // iterate over all possible values of x
      r+=x*x%n==q     // r = the number of matching x values
  `)                  // implicit: return r

পরীক্ষা


সত্যবাদী / মিথ্যা শর্তটি @ ব্যবহারকারী81655 এ এটি একটি খুব আকর্ষণীয় গ্রহণ। চমৎকার কাজ!
শার্লক 9

1

𝔼𝕊𝕄𝕚𝕟, 13 অক্ষর / 25 বাইট

⟦Ѧí]ĉ⇀_²%í≔î)

Try it here (Firefox only).


1
আমি আপনার কোডটি পরীক্ষা করেছি 15 22এবং এটি বলেছে false
শার্লক 9

@ শার্লক 9 ফিক্সড
মামা ফান রোল

কোন কাস্টম কোডপেজ নেই? এটি কোনও গল্ফের ভাষা নয়!
ক্যালকুলেটরফলাইন

এখন আছে, কিন্তু কোড পৃষ্ঠাটি চ্যালেঞ্জের অনেক পরে তৈরি হয়েছিল।
মামা ফান রোল

1

জাপট, 10 বাইট

Vo d_²%V¥U

আমার প্রথম অফিসিয়াল জাপট গল্ফ! বাইট সংরক্ষণের জন্য @ETHProductions কে ধন্যবাদ!

অবহেলিত / ব্যাখ্যা

Vo d_  ²  %V¥ U
Vo dZ{Zp2 %V==U}  // implicit: U,V = inputs
Vo                // Create a range from 0 to n-1
   dZ{         }  // Check if any element Z in the range satisfies the condition:
       Zp2        // Is Z squared...
           %V     // modulo n...
             ==U  // equal to q?
                  // implicit output

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


1
নিস! ইঙ্গিত: 0oVসমান Vo
ETH প্রোডাকশনগুলি

তা জানতেন না। ধন্যবাদ!
মামা ফান রোল


0

মিল্কিওয়ে 1.0.0 , 41 বাইট

:>&{~1-:2h<:>n>;:>;<<b?{_a0_^}~;?{_0_1}}!

এটি প্রত্যাশা করে qএবং nকেবল স্ট্যাকের উপরে থাকবে। এটা একটা আউটপুট 1বা 0সত্য ও মিথ্যা মান যথাক্রমে জন্য।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.