वर्ग का अंत कैसे होता है?


20

बेस -10 में, सभी पूर्ण वर्ग 0 , 1 , 4 , 5 , 6 , या 9 में समाप्त होते हैं ।

बेस -16 में, सभी पूर्ण वर्ग 0 , 1 , 4 या 9 में समाप्त होते हैं ।

Nilknarf वर्णन करता है कि यह क्यों है और इस उत्तर में बहुत अच्छी तरह से कैसे काम करना है , लेकिन मैं यहां एक संक्षिप्त विवरण भी दूंगा:

बेस -10 नंबर, N को स्क्वेर करते समय, "दस" अंक या "सैकड़ों" अंक में क्या "से" अंक प्रभावित नहीं होता है, और इसी तरह। केवल में "लोगों" अंकों एन में "लोगों" अंकों को प्रभावित करता है एन 2 के लिए एक आसान (लेकिन शायद नहीं golfiest) जिस तरह से हर संभव पिछले अंक खोजने के लिए इतना एन 2 मिल रहा है n 2 आधुनिक 10 सभी के लिए 0 <= n < १० । प्रत्येक परिणाम एक अंतिम अंतिम अंक है। Base-m के लिए, आप सभी 0 <= n < m के लिए n 2 mod m पा सकते हैं ।

एक प्रोग्राम लिखें, जो इनपुट एन को दिए जाने पर बेस-एन (डुप्लिकेट के बिना) में एक पूर्ण वर्ग के लिए सभी संभावित अंतिम अंकों को आउटपुट करता है। आप मान सकते हैं एन से अधिक है 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

Google शीट, 52 51 47 बाइट्स

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

टेलर स्कॉट की बदौलत 4 बाइट्स बचाए

सूत्र के अंत में शीट स्वचालित रूप से 4 समापन कोष्ठक जोड़ेगी।

यह आरोही क्रम में परिणाम वापस नहीं करता है लेकिन यह सही परिणाम लौटाता है।

परिणाम


पवित्र गाय, वह मनुष्य जो हत्यारा है! किसने सोचा होगा? +1
बीरकुडा 13

1
यह निश्चित रूप से मेरा पसंदीदा उत्तर है।
लॉर्ड फरक्वाड

@LordFarquaad मैं आश्चर्यचकित हूं और प्रसन्न हूं कि यह इतनी अच्छी तरह से प्राप्त हुआ था। मैं शीट्स और एक्सेल में अधिक गोल्फ खेलने की कोशिश कर रहा हूं, भले ही - और आंशिक रूप से क्योंकि - उनके पास ऐसी सीमित सीमाएं हैं। यह बहुत सारे सरणी सूत्रों के कारण है।
इंजीनियर टोस्ट

आपको )-4 बाइट्स के लिए टर्मिनेटिंग एस ड्रॉप करने में सक्षम होना चाहिए
टेलर स्कॉट

@TaylorScott धन्यवाद! मैंने हाल ही में उस चाल को देखा - शायद आपके एक जवाब पर - और इसका उपयोग शुरू करने के लिए याद रखने की आवश्यकता है।
इंजीनियर टोस्ट

6

05AB1E , 5 बाइट्स

Lns%ê

इसे ऑनलाइन आज़माएं! या टेस्ट सूट के रूप में

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

sयहाँ कैसे काम करता है? क्या इनपुट दोहराया गया है?
लुइस मेंडू

@LuisMendo sहै pop a,b; push b,a। जब एक कमांड स्टैक से कुछ पॉप करने की कोशिश करता है और कुछ भी नहीं बचा है तो अगले इनपुट का उपयोग किया जाता है। यदि कोई और इनपुट नहीं है, तो अंतिम इनपुट का उपयोग किया जाता है ( यहां एक उदाहरण है )। इस मामले में मैं इस्तेमाल कर सकता था ¹जो पहले इनपुट को धक्का देता है, लेकिन sटेस्ट सूट के लिए बेहतर काम करता है।
रिले

धन्यवाद। क्या आपके पास मापदंड के संबंध में अधिक जानकारी है जिसके लिए इनपुट का पुन: उपयोग किया जाता है? (यदि तीन इनपुट कहा गया है और आप खाली स्टैक से दो मानों को पॉप करने की कोशिश करते हैं)?
लुइस मेंडू

1
@LuisMendo इनपुट का उपयोग तब तक किया जाता है जब तक यह बाहर नहीं निकल जाता है, फिर यह अंतिम तत्व का उपयोग करना जारी रखता है। आप इसकी कल्पना कर सकते हैं कि स्टैक क्रम में प्रत्येक इनपुट और अंतिम तत्व की एक अनंत संख्या के साथ गद्देदार था।
रिले

@LuisMendo Ln¹%êयहां बराबर है। s
मैजिक ऑक्टोपस Urn

6

स्विफ्ट , 47 35 32 * बाइट्स

* -3 धन्यवाद @Alexander।

संभवतः इतिहास में पहली बार स्विफ्ट संबंधों ने पायथन की पिटाई की?

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

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


व्याख्या

  • (0..<m).map{}- मैं सीमा के माध्यम से प्राप्त करता हूं [0...m)और निम्नलिखित परिणामों को मैप करता हूं :

  • $0*$0%m- प्रत्येक पूर्णांक का वर्ग आधार को मापता है m

  • Set(...) - डुप्लिकेट को निकालता है।

  • m in - एक चर के लिए आधार निरुपित m


उपयोगकर्ता नाम की जांच ... एक सेकंड प्रतीक्षा करें।
रोहन झुनझुनवाला

1
अधिक यह पायथन की धड़कन है। यह प्रभावशाली है ! मुझे लगता था कि मैं वह दिन कभी नहीं देखूंगा जो होगा।
कालेब क्लेवेटर

@CalebKleveter धन्यवाद! मुझे खुशी है कि आपने इसे प्रभावशाली पाया :)
श्री एक्सकोडर


3

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

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

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


गैर-पुनरावर्ती संस्करण, 60 58 बाइट्स

सहेजे गए 2 बाइट्स @ThePirateBay के लिए धन्यवाद

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

@ ThePirateBay अच्छी पकड़। धन्यवाद।
अरनुलद


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 बाइट्स वास्तव में उपयोग करके कम कर सकता हूं
जूल 27'17 को घातक

ठीक है ... यह कैसे काम करेगा जब नकारात्मक संख्याएं भी हों? क्या यह केवल उन्हें या कुछ और अनदेखा करेगा?
आउटगॉल्फ जूल

@EriktheOutgolfer mod को विभाजन के शेष भाग के रूप में परिभाषित किया जा सकता है, जो सकारात्मक होगा (भागफल चिन्ह लेता है)। संपादित करें: भी, वर्ग सकारात्मक हैं।
jaxad0127

@ jaxad0127 मुझे नहीं लगता कि यहां ऐसा मामला है, क्योंकि >अभी भी नकारात्मक संख्याओं के लिए खाता हूँ।
निकोलग्राफ जूल

3

जाप , 7 6 बाइट्स

Dz%UÃâ

झसे आज़माओ

1 बाइट ने ओलिवर को धन्यवाद दिया


व्याख्या

पूर्णांक का निहित इनपुट U

Ç   Ã

से पूर्णांकों की एक सरणी बनाने 0के लिए U-1समावेशी, और एक समारोह हालांकि प्रत्येक गुजरती हैं।

²

स्क्वायर।

%U

मोडुलो U

â

सरणी में सभी अद्वितीय तत्व प्राप्त करें और परिणाम को स्पष्ट रूप से आउटपुट करें।


1
मुझे नहीं लगता कि रेंज को समावेशी बनाने की जरूरत है। Dz%UÃâबस ठीक काम करने लगता है।
ओलिवर

2

पायथन 3 , 40 39 37 बाइट्स

-1 बाइट मिस्टर एक्सकोडर की बदौलत। -2 बाइट्स बिजनेस कैट के लिए धन्यवाद।

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

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


1
आप को बदल नहीं सकता n**2के साथ n*n?
मिस्टर एक्सकोडर

हाँ, हमेशा यह भूल जाओ। > <धन्यवाद!
जुआन

2
इसके अलावा, बस range(m)पर्याप्त है
व्यवसाय बिल्ली



2

CJam , 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]यह है कि जब तक अतिरिक्त कोष्ठक से छुटकारा पाने के लिए एक डरपोक वाक्यविन्यास नहीं है, तब तक केवल बिंदु-मुक्त संस्करण है।
शौकी

2

MATL , 6 5 बाइट्स

-1 बाइट्स @LuisMendo को धन्यवाद

:UG\u

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


धन्यवाद! मैंने उस फ़ंक्शन को खोज रहे डॉक्टर के माध्यम से देखा, लेकिन उसे ढूंढने में सक्षम नहीं था।
सिनेस्की जू

BTW इस व्याख्याकार द्वारा बनाया गया है Suever प्रलेखन खोज है, आप इसे उपयोगी मिल सकता है
लुइस मेंडो



1

जावास्क्रिप्ट (ईएस 6), 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>

43 बाइट्स अगर Setएक सरणी के बजाय वापस आना स्वीकार्य है।


1

स्काला , 32 30 बाइट्स

ओपी से आसान टिप का सरल उपयोग ।

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

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

-2 बाइट्स प्राथमिकताओं के साथ @MrXcoder करने के लिए धन्यवाद, (के लिए कोई जरूरत नहीं ()चारों ओर *आपरेशन)

ताज्जुब है: करने के लिए यह संभव है परोक्ष जैसी चीजों को समझने के लिए संकलक बता (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 बाइट्स के लिए। प्रतिपादक मॉडुलो की तुलना में अधिक पूर्वता है।
मिस्टर एक्सकोडर

@ Mr.Xcoder ooh ~ धन्यवाद :)
वी।





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

आउटपुट को सॉर्ट करने के लिए, Sकिसी भी तरफ डालें{

मुझे लगता है कि एक छोटा रास्ता होना चाहिए ...


1
हाँ, पायथ की कार्यात्मक शैली बहुत अधिक संक्षिप्त हो जाती हैmapआपका दोस्त है!
एंडर्स केसरग





0

PHP , 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 - सरणी से लगातार डुप्लिकेट से छुटकारा पाएं

SED (स्टैक इफ़ेक्ट डायग्राम) है: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]

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