বর্গ শেষ হয় কিভাবে?


20

বেস -10 এ সমস্ত নিখুঁত স্কোয়ার 0 , 1 , 4 , 5 , 6 বা 9 এর মধ্যে শেষ হয়

বেস -16 এ, সমস্ত নিখুঁত স্কোয়ার 0 , 1 , 4 বা 9 এ শেষ হয়

নীলকনার্ফ কেন এই কারণ এবং এই উত্তরে এটি কীভাবে কার্যকর হবে তা বর্ণনা করে , তবে আমি এখানে একটি সংক্ষিপ্ত বিবরণও দেব:

বেস -10 নম্বর, এন , এর স্কোয়ার করার সময়, "দশক" অঙ্ক, বা "শত" অঙ্কের মধ্যে এবং "ইত্যাদির" দ্বারা "সংখ্যার" অঙ্ক প্রভাবিত হয় না। শুধু এ "বেশী" অঙ্ক এন এ "বেশী" অঙ্ক প্রভাবিত এন 2 , একটি সহজ (কিন্তু হয়তো না golfiest) পথ সব সম্ভব শেষ সংখ্যা এটি তাই এন 2 খুঁজে পেতে এন 2 গেলিক ভাষার 10 সকলের জন্য 0 <= < 10 । প্রতিটি ফলাফল একটি সম্ভাব্য শেষ সংখ্যা। বেজ-M জন্য, আপনি খুঁজে পাইনি এন 2 গেলিক ভাষার মি সবার জন্য 0 <= < মি

একটি প্রোগ্রাম লিখুন, যখন ইনপুট এন দেওয়া হয় , বেস-এন (ডুপ্লিকেট ছাড়াই) একটি নিখুঁত স্কোয়ারের জন্য সমস্ত সম্ভাব্য শেষ সংখ্যা আউটপুট করে। আপনি অনুমান হতে পারে এন চেয়ে বেশী 0 , এবং যে এন ছোট যথেষ্ট যে এন 2 না ওভারফ্লো (আপনি সব পথ পর্যন্ত পরীক্ষা করতে পারেন হবে এন 2 , আমি তোমাকে, ক্ষুদ্রকায় সুশীলা পরীবিশেষ পয়েন্ট একটি নির্দিষ্ট পরিমাণ দেব কিন্তু জানি যে বাস্তব পয়েন্টগুলিতে ব্রাউন পয়েন্টের বিনিময় হার একের কাছে অসীম)।

পরীক্ষা:

 Input -> Output
 1     -> 0
 2     -> 0,1
 10    -> 0,1,5,6,4,9
 16    -> 0,1,4,9
 31    -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28
 120   -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105

এটি , সুতরাং মানক বিধিগুলি প্রয়োগ হয়!

(যদি আপনি এটি খুব সহজ খুঁজে পেয়েছেন বা আপনি এই বিষয়ে আরও গভীরতর প্রশ্ন চান তবে এই প্রশ্নটি বিবেচনা করুন: চৌকোণের চতুর্ভুজ বিশিষ্ট টেস্টিংয়ের বেসগুলির ন্যূনতম কভার )।


1
আউটপুট অ্যারে বাছাই করা প্রয়োজন?
শেগি

@ শেগি নোপ! মেগো, সদৃশ অনুমোদিত নয়। তাত্ত্বিকভাবে, এন প্রচুর হতে পারে, তাই ডুপ্লিকেটগুলি আউটপুটটিকে সুন্দর অপঠনযোগ্য করে তুলবে। আমি প্রশ্নটি
এডিট

একটি সেট আউটপুট গ্রহণযোগ্য?
সম্পূর্ণরূপে

2
@totallyhuman কেন এটি বৈধ হবে না? সেটগুলি
আনর্ডার্ড

উত্তর:



19

গুগল শিটস, 52 51 47 বাইট

=ArrayFormula(Join(",",Unique(Mod(Row(A:A)^2,A1

টেলর স্কটকে ধন্যবাদ 4 বাইট সংরক্ষণ করা

পত্রকগুলি সূত্রের শেষে স্বয়ংক্রিয়ভাবে 4 টি বন্ধ বন্ধনী যুক্ত করবে।

এটি ফলাফলকে আরোহণের ক্রমানুসারে ফেরত দেয় না তবে এটি সঠিক ফলাফল দেয়।

ফলাফল


পবিত্র গরু, মানুষ যে ফ্রিকেন হত্যাকারী! কে ভাববে? +1
বিয়ারকুদা 13

1
এটি অবশ্যই এখনও পর্যন্ত আমার প্রিয় উত্তর।
লর্ড ফারকোয়াড

@ লর্ড ফারকোয়াড আমি অবাক এবং সন্তুষ্ট হয়েছি যে এটি এত ভালভাবে গৃহীত হয়েছিল। আমি শীট এবং এক্সেলে আরও বেশি গল্ফ দেওয়ার চেষ্টা করেছি - এবং আংশিক কারণ - তাদের সীমাবদ্ধ রেঞ্জ রয়েছে। এটি প্রচুর অ্যারে সূত্র নিয়েছে।
ইঞ্জিনিয়ার টোস্ট

আপনি টার্মিনেটিং )-4 বাইটের জন্য ড্র করতে সক্ষম হবেন
টেলর স্কট

@ টেলরস্কট ধন্যবাদ! আমি সেই কৌশলটি সম্প্রতি কোথাও দেখেছি - সম্ভবত আপনার উত্তরগুলির একটিতে - এবং এটি ব্যবহার শুরু করার জন্য মনে রাখা দরকার।
ইঞ্জিনিয়ার টোস্ট

6

05 এ বি 1 ই , 5 বাইট

Lns%ê

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

L     # Range 1 .. input
 n    # Square each
  s%  # Mod by input
    ê # Uniquify (also sorts as a bonus)

sএখানে কিভাবে কাজ করে ? ইনপুট পুনরাবৃত্তি হয়?
লুইস মেন্ডো

@ লুইস মেন্ডো sহ'ল pop a,b; push b,a। যখন কোনও কমান্ড স্ট্যাক থেকে কোনও কিছু পপ করার চেষ্টা করে এবং পরবর্তী ইনপুট ব্যবহার করা হয় তখন কিছুই থাকে না। যদি আর কোনও ইনপুট না থাকে তবে শেষ ইনপুটটি ব্যবহৃত হয় ( এখানে একটি উদাহরণ রয়েছে )। এই ক্ষেত্রে আমি ব্যবহার করতে পারতাম ¹যা প্রথম ইনপুটটিকে ধাক্কা দেয় তবে sপরীক্ষার স্যুটটির জন্য আরও ভাল কাজ করে।
রিলে

ধন্যবাদ। কোন ইনপুট পুনরায় ব্যবহৃত হয় সেই মানদণ্ড সম্পর্কিত আপনার কাছে কি আরও তথ্য আছে? (যদি সেখানে তিনটি ইনপুট বলা হয়েছে এবং আপনি একটি খালি স্ট্যাক থেকে দুটি মান পপ করার চেষ্টা করছেন)?
লুইস মেন্ডো

1
@ লুইসমেডো ইনপুটটি শেষ না হওয়া অবধি ব্যবহার করা হবে, তারপরে এটি শেষ উপাদানটি ব্যবহার করতে থাকবে। আপনি এটি কল্পনা করতে পারেন যেমন স্ট্যাকটি প্রতিটি ইনপুট ক্রমযুক্ত এবং শেষ উপাদানটির অসীম সংখ্যার সাথে প্যাড করা ছিল।
রিলে

@ লুইস মেন্ডো Ln¹%êএখানে সমান। s
ম্যাজিক অক্টোপাস উরান

6

সুইফ্ট , 47 35 32 * বাইট

* -3 অ্যালেক্সান্ডারকে ধন্যবাদ

ইতিহাসে সম্ভবত প্রথমবারে সুইফট সম্পর্কগুলি পাইথনকে হারায়?

{m in Set((0..<m).map{$0*$0%m})}

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


ব্যাখ্যা

  • (0..<m).map{}- পরিসীমাটির মধ্য দিয়ে পরিবেশন করা [0...m)এবং নিম্নলিখিত ফলাফলগুলি মানচিত্র করুন:

  • $0*$0%m - প্রতিটি পূর্ণসংখ্যার বর্গটি বেসকে মডিউল করে দেয় m

  • Set(...) - নকলগুলি সরান।

  • m in - বেসটি একটি ভেরিয়েবলের জন্য বরাদ্দ করে m


ব্যবহারকারীর নাম চেক আউট ... এক সেকেন্ড অপেক্ষা করুন।
রোহান ঝুনঝুনওয়ালা

1
এর মতো আরও পাইথনকে প্রহার করে। যে চিত্তাকর্ষক ! আমি ভেবেছিলাম যে দিনটি কখনই ঘটবে না।
কালেব ক্লেভেটার

@ কালেব ক্লেভেটার ধন্যবাদ! আপনি খুশী হয়ে
গেছেন বলে


3

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

f=(m,k=m,x={})=>k?f(x[k*k%m]=m,k-1,x):Object.keys(x)

পরীক্ষার মামলা


অ-পুনরাবৃত্ত সংস্করণ, 60 58 বাইট

@ দ্য পাইরেটবেকে ধন্যবাদ 2 বাইট সংরক্ষণ করুন

m=>(a=[...Array(m).keys()]).filter(v=>a.some(n=>n*n%m==v))

পরীক্ষার মামলা


অপরিবর্তনীয় 58 বাইট:m=>(a=[...Array(m).keys()]).filter(v=>a.some(n=>n*n%m==v))

পছন্দ করুন ধন্যবাদ।
আর্নৌল্ড


3

ব্র্যাচল্যাগ , 10 9 বাইট

>ℕ^₂;?%≜ᶠ

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

ব্যাখ্যা

       ≜ᶠ       Find all numbers satisfying those constraints:
    ;?%           It must be the result of X mod Input where X…
  ^₂              …is a square…
>ℕ                …of an integer in [0, …, Input - 1]

আমি {>≜^₂;?%}ᵘবিকল্প হিসাবে পরামর্শ দিতে যাচ্ছিলাম ... তখন আমি বুঝতে পারি সেখানে নেতিবাচক সংখ্যাও রয়েছে। > _ <
এরিক দি আউটগল্ফার

1
@EriktheOutgolfer একবার কমিট Tio টানা পরার, আমি আসলে এই উত্তর 9 বাইট প্রকৃতপক্ষে ব্যবহার কমে যায়
ফ্যাটালাইজ করুন

ঠিক আছে ... নেতিবাচক সংখ্যা আছে যখন এটি কিভাবে কাজ করবে? এটি কেবল তাদের বা কিছু উপেক্ষা করবে?
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার মোডকে বিভাগের বাকী অংশ হিসাবে সংজ্ঞায়িত করা যেতে পারে, যা ইতিবাচক হবে (ভাগফলটি চিহ্নটি নিবে)। সম্পাদনা: এছাড়াও, স্কোয়ারগুলি ইতিবাচক।
jaxad0127

@ jaxad0127 আমি মনে করি না যে এটি এখানেই ঘটেছে, যেহেতু >এখনও নেতিবাচক সংখ্যার জন্য অ্যাকাউন্ট হবে af
এরিক দি আউটগল্ফার

3

জাপট , 7 6 বাইট

Dz%UÃâ

এটা পরীক্ষা করো

অলিভারকে ধন্যবাদ 1 বাইট


ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U

Ç   Ã

থেকে পূর্ণসংখ্যার একটি অ্যারের তৈরি করুন 0থেকে U-1সমেত, এবং একটি ফাংশন যদিও প্রতিটি পাস।

²

স্কয়ার।

%U

মডুলো U

â

অ্যারেতে সমস্ত অনন্য উপাদান পান এবং ফলকে সুস্পষ্টভাবে ফলাফল প্রদান করুন।


1
আমি মনে করি না পরিসীমাটি অন্তর্ভুক্ত হওয়া দরকার। Dz%UÃâশুধু ভাল কাজ বলে মনে হয়.
অলিভার

2

পাইথন 3 , 40 39 37 বাইট

-১ বাইট মিঃ এক্সকোডারকে ধন্যবাদ। -২ বাইট বিজনেস বিড়ালকে ধন্যবাদ।

lambda m:[*{n*n%m for n in range(m)}]

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


1
আপনি কি n**2সাথে প্রতিস্থাপন করতে পারবেন না n*n?
মিঃ এক্সকোডার

হ্যাঁ, সর্বদা এটি ভুলবেন না > <ধন্যবাদ!
সম্পূর্ণরূপে

2
এছাড়াও, কেবল range(m)যথেষ্ট
বিড়াল বিড়াল



2

সিজেম , 12 বাইট

{_,_.*\f%_&}

নামবিহীন ব্লক একটি নম্বর গ্রহণ করে একটি তালিকা ফেরত দেয়।

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

ব্যাখ্যা

_,          Copy n and get the range [0 .. n-1]
  _.*       Multiply each element by itself (square each)
     \f%    Mod each by n
        _&  Deduplicate

নিস! আমার {:X{_*X%}%_&}13 বাইট ছিল
লুইস মেন্ডো

2

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

import Data.List
f m=nub[n^2`mod`m|n<-[0..m]]

অ্যান্ডারস ক্যাসরগ থেকে -4 বাইট

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


দুঃখজনকভাবে বিন্দু মুক্ত সংস্করণটি f m=nub$map((`mod`m).(^2))[0..m]ঠিক ততক্ষণ দীর্ঘ, যদি না অতিরিক্ত বন্ধনী থেকে মুক্তি পেতে কোনও ছদ্মবেশী বাক্য গঠন থাকে is
shooqie

2

এমএটিএল , 6 5 বাইট

-১ বাইট @ লুইস মেন্ডোকে ধন্যবাদ thanks

:UG\u

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


ধন্যবাদ! আমি দস্তাবেজটি সেই ফাংশনটির জন্য অনুসন্ধান করেছিলাম কিন্তু এটি সন্ধান করতে সক্ষম হইনি।
সিনাস্কি

বিটিডব্লিউ এই দোভাষীর স্যুভারের তৈরি ডকুমেন্টেশন সন্ধান রয়েছে, আপনি এটি দরকারী হিসাবে খুঁজে পেতে পারেন
লুইস মেন্ডো



1

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

f=
n=>[...new Set([...Array(n)].map((_,i)=>i*i%n))]
<input type=number min=0 oninput=o.textContent=f(+this.value)><pre id=o>

Setএকটি অ্যারের পরিবর্তে একটি ফেরত দেওয়া হলে 43 বাইট গ্রহণযোগ্য।


1

স্কালা , 32 30 বাইট

ওপি থেকে সহজ টিপসের সহজ ব্যবহার ।

(0 to n-1).map(x=>x*x%n).toSet

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

-২ বাইটস @ এমআরএক্সকোডারকে অগ্রাধিকার সহ ধন্যবাদ ( ()আশেপাশের প্রয়োজন নেই)* অপারেশন করার )

ভাবছেন: কম্পাইলারকে স্পষ্টভাবে কি এই জাতীয় জিনিসগুলি বোঝার জন্য বলা (0 to n-1)map(x=>x*x%n)toSet(সম্ভব না করে import scala.language.postfixOps) বলা সম্ভব?


1
(0 to n-1).map(x=>x*x%n).toSet30 বাইট জন্য। মডিউলোর তুলনায় ক্ষয়ক্ষতির উচ্চতর প্রাধান্য রয়েছে।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার ওহ ~ ধন্যবাদ :)
ভি।


0

রেটিনা , 70 বাইট

.+
$*

;$`¶$`
1(?=.*;(.*))|;1*
$1
(1+)(?=((.*¶)+\1)?$)

D`1*¶
^|1+
$.&

এটি অনলাইন চেষ্টা করুন! সতর্কতা: বড় ইনপুটগুলির জন্য ধীরে ধীরে। সামান্য দ্রুত 72-বাইট সংস্করণ:

.+
$*

$'¶$';
1(?=.*;(.*))|;1*
$1
+s`^((1+)¶.*)\2
$1
^1+

D`1*¶
^|1+
$.&

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




0

পাইথ , 13 বাইট

VQ aY.^N2Q){Y

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

বোঝাতে লম্বা প্রচেষ্টা:

VQ               for N in [0 .. input-1]
                   blank space to supress implicit print inside the loop
     .^N2Q         N ^ 2 % input
   aY              append that to Y, which is initially an empty list
          )      end for
           {Y    deduplicate and implicit print

আউটপুটটি বাছাই করতে একটি sertোকান S এর যে কোনও দিকে{

আমি মনে করি একটি ছোট উপায় থাকতে হবে ...


1
হ্যাঁ, পাইথের কার্যকরী স্টাইলটি আরও সংক্ষিপ্ত আকার ধারণ করে । mapতোমার বন্ধু!
অ্যান্ডারস ক্যাসরগ





0

পিএইচপি , 53 বাইট

for(;$i<$t=$argv[1];)$a[$z=$i++**2%$t]++?:print"$z
";

n^2 mod baseসূত্র ব্যবহার করে 0 টি ইনপুট নম্বর থেকে লুপ করুন, ব্যবহৃত হয়েছে এমন চিহ্নগুলি চিহ্নিত করতে। এটি অ্যারেতে সেই অবস্থানে যায়, এটি বাড়ানো হয়েছে কিনা তা পরীক্ষা করে এবং এটি না থাকলে আউটপুট করে। এটি পরে এটি বৃদ্ধি করে যাতে সদৃশ মান মুদ্রিত হয় না।

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


0

8 ম , 138 131 বাইট

কোড

[] swap dup >r ( 2 ^ r@ n:mod a:push ) 1 rot loop rdrop ' n:cmp a:sort ' n:cmp >r -1 a:@ swap ( tuck r@ w:exec ) a:filter rdrop nip

ব্যাখ্যা

[] - আউটপুট অ্যারে তৈরি করুন

swap dup >r - পরবর্তী ব্যবহারের জন্য ইনপুট সংরক্ষণ করুন

( 2 ^ r@ n:mod a:push ) 1 rot loop - গণনা স্কয়ার শেষ

rdrop - পরিষ্কার আর স্ট্যাক

' n:cmp a:sort - আউটপুট অ্যারে বাছাই করুন

' n:cmp >r -1 a:@ swap ( tuck r@ w:exec ) a:filter rdrop nip - অ্যারে থেকে একটানা সদৃশগুলি পরিত্রাণ পান

এসইডি (স্ট্যাক এফেক্ট ডায়াগ্রাম) হ'ল:a -- a

ব্যবহার এবং উদাহরণ

: f [] swap dup >r ( 2 n:^ r@ n:mod a:push ) 1 rot loop rdrop ' n:cmp a:sort ' n:cmp >r -1 a:@ swap ( tuck r@ w:exec ) a:filter rdrop nip ;

ok> 120 f .
[0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105]

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