द्विघात अवशेष बहुत मजेदार हैं!


13

परिभाषाएं

द्विघात अवशेष

एक पूर्णांक r एक कहा जाता है द्विघात अवशेषों सापेक्ष n यदि वहां मौजूद एक पूर्णांक x ऐसी है कि:

x2r(modn)

द्विघात अवशेषों की सेट modulo n बस के परिणामों को देखकर की जा सकती है x2modn के लिए 0xn/2

चुनौती का क्रम

हम an को एक ही मान के होने की न्यूनतम संख्या (r0r1+n)modn के रूप में (r0,r1) सभी जोड़े (r_0, r_1) के लिए द्विघात अवशेष modulo n

पहले 30 शब्द हैं:

1,2,1,1,1,2,2,1,1,2,3,1,3,4,1,1,4,2,5,1,2,6,6,1,2,6,2,2,7,2

यह A316975 (स्वयं द्वारा प्रस्तुत) है।

उदाहरण: n=10

द्विघात अवशेषों सापेक्ष 10 हैं 0 , 1 , 4 , 5 , 6 और 9

प्रत्येक जोड़ी के लिए (r0,r1) इन द्विघात अवशेषों की, हम गणना (r0r1+10)mod10 है, जो निम्न तालिका करने के लिए होता है (जहां r0 बाईं तरफ है और r1 शीर्ष पर है):

014569009654111076524430985554109666521079985430

उपरोक्त तालिका में समान मान के होने की न्यूनतम संख्या (for , , और )। इसलिए ।22378a10=2

आपका कार्य

  • आप या तो:

    • पूर्णांक और प्रिंट करें या लौटें (या तो 0-अनुक्रमित या 1-अनुक्रमित)nan
    • एक पूर्णांक और अनुक्रम के पहले पदों को प्रिंट या वापस करेंnn
    • कोई इनपुट न लें और अनुक्रम को हमेशा के लिए प्रिंट करें
  • आपका कोड अनुक्रम के 50 पहले मूल्यों में से किसी को भी 1 मिनट से कम समय में संसाधित करने में सक्षम होना चाहिए।
  • पर्याप्त समय और स्मृति को देखते हुए, आपके कोड को सैद्धांतिक रूप से आपकी भाषा द्वारा समर्थित किसी भी सकारात्मक पूर्णांक के लिए काम करना चाहिए।
  • यह

9
OEIS पर प्रकाशित एक अनुक्रम प्राप्त करने पर आभार!
AdmBorkBork

@AdmBorkBork धन्यवाद। :) (वास्तव में, मैं आमतौर पर OEIS अनुक्रम को पोस्ट करने से बचता हूं-एक चुनौती के रूप में है, लेकिन मुझे लगता है कि यह एक के लिए है।)
अरनौल्ड

6
क्या +nअंदर (...)mod nकोई प्रभाव नहीं है? यदि ऐसा है तो यह बहुत अजीब है जो परिभाषा का हिस्सा है।
जोनाथन एलन

3
@JonathanAllan वास्तव में, मैंने अनुक्रम के ड्राफ्ट संस्करण में एक समान टिप्पणी की और सुझाव दिया कि इसे हटा दिया गया। लेकिन मुझे कोई स्पष्ट सहमति नहीं मिली, न ही मुझे इस बारे में कोई प्रतिक्रिया मिली। (और मुझे याद है कि अन्य दृश्यों को देखा है (some_potentially_negative_value + n) mod n।) मुझे लगता है कि यह एक प्रोग्रामिंग चुनौती में होना बेहतर है, हालांकि, क्योंकि परिणाम का संकेत भाषा पर निर्भर करता है
अरनुलद

1
मैंने सफलता के बिना एक सीधा सूत्र खोजने की कोशिश की है। अनुक्रम गुणक है और यह समान है a_p = round(p/4), जो हमें सभी वर्गफ्री संख्याओं के लिए मान देता है। लेकिन स्थिति को primes की शक्तियों पर जटिल लगता है, और 3 mod 4 और 1 mod 4 मामलों को अलग से नियंत्रित करने की आवश्यकता होती है।
16

जवाबों:


5

MATL , 14 बाइट्स

:UG\u&-G\8#uX<

इसे ऑनलाइन आज़माएं! या पहले 30 मूल्यों को सत्यापित करें

व्याख्या

:      % Implicit input. Range
U      % Square, element-wise
G      % Push input again
\      % Modulo, element-wise
u      % Unique elements
&-     % Table of pair-wise differences
G      % Push input
\      % Modulo, element-wise
8#u    % Number of occurrences of each element
X<     % Minimum. Implicit display

4

जाप -g , 22 20 बाइट्स

बहुत लंबे समय तक यह पता लगाना कि चुनौती वास्तव में क्या थी, आगे गोल्फिंग के लिए समय से बाहर भाग गया: \

nअनुक्रम में वें शब्द को आउटपुट करता है । इनपुट होने पर संघर्ष करना शुरू करता है >900

õ_²uUÃâ ïÍmuU
£è¥XÃn

इसे आज़माएं या 0-50 के लिए परिणाम जांचें


व्याख्या

                  :Implicit input of integer U
õ                 :Range [1,U]
 _                :Map
  ²               :  Square
   uU             :  Modulo U
     Ã            :End map
      â           :Deduplicate
        ï         :Cartesian product of the resulting array with itself
         Í        :Reduce each pair by subtraction
          m       :Map
           uU     :  Absolute value of modulo U
\n                :Reassign to U
£                 :Map each X
 è                :  Count the elements in U that are
  ¥X              :   Equal to X
    Ã             :End map
     n            :Sort
                  :Implicitly output the first element in the array

4

जेली ,  13  10 बाइट्स

-1 डेनिस के लिए धन्यवाद (एक अग्रणी के साथ डेडिक व्याख्या मजबूर करना ð)
-2 डेनिस के लिए भी धन्यवाद (क्योंकि जोड़े डी-डुप्लिकेट हो सकते हैं हम एक Rऔर एक से बच सकते हैं 2)

ðp²%QI%ĠẈṂ

एक सकारात्मक लिंक जो एक गैर-नकारात्मक पूर्णांक प्राप्त करता है, को स्वीकार करने वाला एक अद्वैत लिंक।

इसे ऑनलाइन आज़माएं! या पहले 50 शब्द देखें

कैसे?

ðp²%QI%ĠẈṂ - Link: integer, n                   e.g. 6
ð          - start a new dyadic chain - i.e. f(Left=n, Right=n)
 p         - Cartesian product of (implicit ranges)  [[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[2,1],[2,2],[2,3],[2,4],[2,5],[2,6],[3,1],[3,2],[3,3],[3,4],[3,5],[3,6],[4,1],[4,2],[4,3],[4,4],[4,5],[4,6],[5,1],[5,2],[5,3],[5,4],[5,5],[5,6],[6,1],[6,2],[6,3],[6,4],[6,5],[6,6]]
  ²        - square (vectorises)                     [[1,1],[1,4],[1,9],[1,16],[1,25],[1,36],[4,1],[4,4],[4,9],[4,16],[4,25],[4,36],[9,1],[9,4],[9,9],[9,16],[9,25],[9,36],[16,1],[16,4],[16,9],[16,16],[16,25],[16,36],[25,1],[25,4],[25,9],[25,16],[25,25],[25,36],[36,1],[36,4],[36,9],[36,16],[36,25],[36,36]]
   %       - modulo (by Right) (vectorises)          [[1,1],[1,4],[1,3],[1,4],[1,1],[1,0],[4,1],[4,4],[4,3],[4,4],[4,1],[4,0],[3,1],[3,4],[3,3],[3,4],[3,1],[3,0],[4,1],[4,4],[4,3],[4,4],[4,1],[4,0],[1,1],[1,4],[1,3],[1,4],[1,1],[1,0],[0,1],[0,4],[0,3],[0,4],[0,1],[0,0]]
    Q      - de-duplicate                            [[1,1],[1,4],[1,3],[1,0],[4,1],[4,4],[4,3],[4,0],[3,1],[3,4],[3,3],[3,0],[0,1],[0,4],[0,3],[0,0]]
     I     - incremental differences (vectorises)    [0,3,2,-1,-3,0,-1,-4,-2,1,0,-3,1,4,3,0]
      %    - modulo (by Right) (vectorises)          [0,3,2,5,3,0,5,2,4,1,0,3,1,4,3,0]
       Ġ   - group indices by value                  [[1,6,11,16],[10,13],[3,8],[2,5,12,15],[9,14],[4,7]]
        Ẉ  - length of each                          [3,2,2,4,2,2]
         Ṃ - minimum                                 2

3

05AB1E , 22 20 15 13 बाइट्स

LnI%êãÆI%D.m¢

-2 बाइट्स @Mr को धन्यवाद Xcoder

इसे ऑनलाइन आज़माएं या पहले 99 परीक्षण मामलों को सत्यापित करें (लगभग 3 सेकंड में) । (नोट: पायथन विरासत संस्करण का उपयोग नए एलिक्जिर रीराइट के बजाय टीआईओ पर किया गया है। यह लगभग 10x तेज़ है, लेकिन इसके लिए एक अनुगामी ¬(सिर) की आवश्यकता होती है क्योंकि .mएकल आइटम के बजाय एक सूची देता है, जिसे मैंने पाद लेख में जोड़ा है।)

स्पष्टीकरण:

L       # Create a list in the range [1, (implicit) input]
 n      # Square each
  I%    # And then modulo each with the input
    ê   # Sort and uniquify the result (faster than just uniquify apparently)
 ã      # Create pairs (cartesian product with itself)
  Æ     # Get the differences between each pair
   I%   # And then modulo each with the input
D.m     # Take the least frequent number (numbers in the legacy version)
   ¢    # Take the count it (or all the numbers in the legacy version, which are all the same)
        # (and output it implicitly)

Ýns%ÙãÆI%D.m¢। (विरासत में नहीं, नए संस्करण में)
श्री एक्सकोडर

@ Mr.Xcoder आह, मैं .. के बजाय उपयोग करने के लिए एक मूर्ख हूँ ã।>> और .mअमृत ​​पुन: लिखने में अलग तरह से अभिनय नहीं जानता था । मेरे पास मूल रूप से नया संस्करण था, लेकिन मैंने ¥काम नहीं करने के बाद विरासत पर स्विच किया (जो आपने तय किया है Æ)। मैं अभी भी TIO पर विरासत का उपयोग करता हूं, क्योंकि यह इस चुनौती के लिए तेज़ है।
केविन क्रूज़सेन

3

C (gcc) , 202 200 190 188 187 186 बाइट्स

  • सहेजे गए दो बारह चौदह करने के लिए पंद्रह बाइट्स धन्यवाद ceilingcat
  • एक बाइट को बचाया।
Q(u,a){int*d,*r,A[u],t,i[a=u],*c=i,k;for(;a--;k||(*c++=a*a%u))for(k=a[A]=0,r=i;r<c;)k+=a*a%u==*r++;for(r=c;i-r--;)for(d=i;d<c;++A[(u+*r-*d++)%u]);for(t=*A;++a<u;t=k&&k<t?k:t)k=A[a];u=t;}

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


@ceilingcat कूल; एक और पूर्णांक घोषित करना वास्तव में एक और बाइट को बचाने की अनुमति देता है।
जोनाथन फ्रेच

@ceilingcat मुझे लगता है कि वे भाव समतुल्य नहीं हैं क्योंकि मुझे सबसे छोटे धनात्मक मॉडुलो अवशेषों की आवश्यकता है।
जोनाथन फ्रीच


1

के (ngn / k) , 29 बाइट्स

{&/#:'=,/x!r-\:r:?x!i*i:!x}

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

{ } तर्क के साथ कार्य करें x

!xसे पूर्णांकों 0के लिएx-1

i: को आवंटित i

x! आधुनिक x

? अद्वितीय

r: को आवंटित r

-\: प्रत्येक बाएँ से घटाना

r-\:r सभी अंतरों का मैट्रिक्स

x! आधुनिक x

,/ मैट्रिक्स की पंक्तियों को संक्षिप्त करें

= समूह, अनूठे मूल्यों से घटना सूचकांकों की सूचियों में एक शब्दकोश लौटाता है

#:' शब्दकोश में प्रत्येक मूल्य की लंबाई

&/ न्यूनतम




1

एपीएल (डायलॉग यूनिकोड) , 28 24 बाइट्स

{⌊/⊢∘≢⌸∊⍵|∘.-⍨∪⍵|×⍨⍳⍵+1}

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

उपसर्ग प्रत्यक्ष समारोह। उपयोग करता है ⎕IO←0

4 बाइट के लिए गायों को धन्यवाद!

किस तरह:

{⌊/⊢∘≢⌸∊⍵|∘.-⍨∪⍵|×⍨⍳⍵+1}  Dfn, argument 

                   ⍳⍵+1  Range [0..⍵]
                 ×⍨      Squared
               ⍵|        Modulo 
                        Unique
          ∘.-⍨           Pairwise subtraction table
       ∊⍵|               Modulo ⍵, flattened
                        Key; groups indices (in its ⍵) of values (in its ⍺).
   ⊢∘≢                   Tally (≢) the indices. This returns the number of occurrences of each element.
 ⌊/                       Floor reduction; returns the smallest number.

1
छोटे बाइट- 2*⍨×⍨r←¨⊂r∘.-⍨{≢⍵}⊢∘≢
शेविंग के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.