स्पार्स प्रोटेक्टर


12

कुछ सकारात्मक पूर्णांक को देखते हुए n, सबसे अधिक संख्या वाले निशान के साथ एक प्रपंचक डिज़ाइन करें जो आपको सभी कोणों को मापने की अनुमति देता है जो एक 2π/n(एक माप में प्रत्येक) के अभिन्न गुण हैं ।

विवरण

एक आउटपुट के रूप में, आप श्रेणी में पूर्णांकों की एक सूची उत्पादन कर सकते हैं 0करने के लिए n-1(या 1करने के लिए nप्रत्येक चिह्न की स्थिति को दर्शाते हैं) कि। वैकल्पिक रूप से आप उत्पादन लंबाई की एक स्ट्रिंग / सूची कर सकते हैं nएक साथ #प्रत्येक मार्क की स्थिति में है और एक _(अंडरस्कोर) जहां कोई भी है। (या दो अलग-अलग पात्रों अगर अधिक सुविधाजनक।)
उदाहरण: के लिए n = 5आप वास्तव में 3 अंक सभी कोणों को मापने के लिए सक्षम होना चाहिए 2π/5, 4π/5, 6π/5, 8π/5, 2πपर एक चिह्न (उदाहरण के लिए) की स्थापना करके 0, पर एक निशान 2π/5और पर एक निशान 6π/5। हम इसे एक सूची के [0,1,3]रूप में या एक स्ट्रिंग के रूप में एन्कोड कर सकते हैं ##_#_

उदाहरण

ध्यान दें कि आउटपुट आवश्यक रूप से अद्वितीय नहीं हैं।

n:  output:
 1  [0]
 2  [0,1]
 3  [0,1]
 4  [0,1,2]
 5  [0,1,2]
 6  [0,1,3]
 7  [0,1,3]
 8  [0,1,2,4]
 9  [0,1,3,4]
10  [0,1,3,6]
11  [0,1,3,8]
20  [0,1,2,3,6,10]

पुनश्च: यह विरल शासक समस्या के समान है, लेकिन एक रैखिक पैमाने (दो छोरों के साथ) के बजाय हम एक परिपत्र (कोणीय) पैमाने पर विचार करते हैं।

PPS: इस स्क्रिप्ट को प्रत्येक के लिए अंकों के सेट के एक उदाहरण की गणना करनी चाहिए nइसे ऑनलाइन आज़माएं!

PPPS: जैसा कि @ngn ने बताया है, यह समस्या आदेश के चक्रीय समूह के न्यूनतम अंतर आधार को खोजने के बराबर है n। न्यूनतम आदेश http://oeis.org/A283297 में सूचीबद्ध हैं और कुछ सैद्धांतिक सीमाएँ https://arxiv.org/pdf/1702.02631.pdf में पाई गई हैं



n = q^2 + q + 1प्राइम पावर के लिए सटीक ओवरलैप के साथ बॉर्डरलाइन दुपट्टाq
पीटर टेलर

@PeterTaylor मुझे नहीं लगता कि आपको क्यों लगता है कि यह एक डुबकी है। और क्या आप विस्तार से बता सकते हैं कि "ओवरलैप" क्या है? हालांकि समानताएं हैं, ये दो बहुत अलग समस्याएं हैं। इसके अलावा यह कोड-गोल्फ है और आपके द्वारा लिंक की गई चुनौती भी कार्यक्रम के आकार को इसके स्कोरिंग में शामिल नहीं करती है।
16

वे दो बहुत अलग समस्याएं नहीं हैं। अपने PPPS में OEIS लिंक पढ़ें: "सिंगर का अंतर सेट" जो मेरे जवाब में लागू प्रोजेक्टिव फ़ील्ड विधि द्वारा उत्पन्न गोलम शासक के लिए ठीक है। मैं इस बात को लेता हूं कि स्कोरिंग विधि अलग है।
पीटर टेलर

जवाबों:


4

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

ŒPðṗ2I%QLðÐṀḢ

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

यह काम किस प्रकार करता है

ŒPðṗ2I%QLðÐṀḢ  Main link. Argument: n (integer)

ŒP             Powerset; generate all subsequences of [1, ..., n].
  ð       ÐṀ   Begin a dyadic chain. Call it with all subsequences S as left
               argument and n as right one. Return the array of all sequences for
               which the chain returns the maximal result, i.e., [0, ..., n-1].
   ṗ2              Cartesian power 2; generate all pairs of elements of S.
     I             Increments; map each pair [x, y] to [y-x].
      %            Map each [y-x] to [(y-x)%n].
       Q           Unique; deduplicate the array of modular difference singletons.
        L          Take the length.
         ð     Begin a new, dyadic chain.
               Left argument: S' (filted subsequences). Right argument: n
            Ḣ  Take the first element of S'.
               Since S was sorted by length, so is S', so the first element of S'
               is the shortest subsequence that satisfies the condition.

4

MATL , 20 बाइट्स

:qGZ^!"G:q@&-G\m?@u.

यह टीआईओ पर स्मृति से बाहर के आदानों के लिए चलता है 8

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

यह काम किस प्रकार करता है

यह [0 1 ... n-1]घातांक के साथ कार्टेशियन शक्ति उत्पन्न nकरता है, और प्रत्येक कार्टेशियन टपल का परीक्षण करने के लिए एक लूप का उपयोग करता है। परीक्षण टपल अगर तत्व के सभी जोड़ो मतभेद कंप्यूटिंग, और अगर उन मतभेदों सापेक्ष देखने में होते हैं nशामिल सभी संख्या 0, 1, ..., n-1

जैसे ही एक कार्टेशियन टपल को पूरा करने की स्थिति में पाया जाता है कि लूप बाहर निकल गया है, और उस ट्यूपल में अद्वितीय प्रविष्टियां समाधान के रूप में मुद्रित होती हैं।

यह काम करता है क्योंकि यू > वी , यू यूनिक एंट्रीज के साथ टुपल्स का पर्याप्त सेट वी यूनीक एंट्रीज के साथ किसी भी ट्यूपल की तुलना में पहले टेस्ट किए जाने की गारंटी है । एक "पर्याप्त सेट" का अर्थ है कि अगर उस सेट में कोई भी टुपल्स एक समाधान नहीं है, तो समान संख्या में अद्वितीय प्रविष्टियों के साथ कोई अन्य टपल समाधान नहीं है।

उदाहरण के लिए, n = 3कार्टेशियन ट्यूपल्स को नीचे दिखाया गया है, जहां प्रत्येक पंक्ति एक ट्यूपल है:

0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
 ···
2 2 1
2 2 2
  • पहला टपल, अद्वितीय मूल्य के 0 0 0साथ एकमात्र प्रासंगिक टपल है 1। भले ही 1 1 1और 2 2 2बहुत बाद में दिखाई देगा, 0 0 0एक समाधान है अगर और केवल अगर वे हैं। तो टपल द्वारा गठित सिंगलटन सेट u = के 0 0 0लिए पर्याप्त सेट है ।1
  • दूसरे और तीसरे tuples, अर्थात् 0 0 1और 0 0 2, एक पर्याप्त सेट फार्म के लिए यू = 2; यही है, वे सभी मामलों को 2अद्वितीय मूल्यों के साथ कवर करते हैं। चौथे टपल, 0 1 0को कभी भी समाधान के रूप में नहीं चुना 0 0 1जाएगा , क्योंकि पहले परीक्षण किया गया होगा। इसी तरह, टपल 0 2 0का चयन कभी नहीं किया जाएगा क्योंकि यह बाद की तुलना में प्रकट होता है 0 0 2। ट्यूपल्स जैसे कि 2 2 1समाधान के रूप में कभी नहीं चुना जाएगा क्योंकि 0 0 1यह समकक्ष (मोडुलो nऔर डुप्लिकेटेड वैल्यू तक) है और पहले दिखाई देता है।
  • आदि।

टिप्पणी कोड:

:q         % Push [0 1 ... n-1], where n is the input (implicit)
GZ^        % Cartesian power with exponent n. Gives an (n^n) × n matrix
           % where each row is a Cartesian tuple
!          % Transpose. Now each Cartesian tuple is a column
!"         % For each column (that is, each Cartesian tuple)
  G:q      %   Push [0 1 ... n-1] (*)
  @        %   Push current column
  &-       %   Matrix of pairwise differences (**)
  G\       %   Modulo n, element-wise
  m        %   Ismember function: for each entry in (*), gives true iff
           %   it is present in (**)
  ?        %   If all entries are true
    @      %     Push current column
    u      %     Unique entries. This is the solution
    .      %     Break loop
           %   End (implicit)
           % End (implicit)
           % Display (implicit)

3

स्टैक्स , 26 21 बाइट्स

Åæ4&╕u◙╩►s∙Φ▬═(0~ d+Q

भागो और डिबग ऑनलाइन!

अभी इनपुट के लिए ऑनलाइन संस्करण विफल है, 20लेकिन यह बग ठीक कर दिया गया है और अभी तक ऑनलाइन दुभाषिया तैनात करने के लिए तैनात नहीं किया गया है20मामले को चलाने के लिए कुछ समय लगता है ।

व्याख्या

पता चलता है कि जिस तरह से जोड़ीदार अंतर की गणना की जाती है, मुझे उसके kऔर x-kयहाँ के समतुल्यता के बारे में चिंता करने की आवश्यकता नहीं है। बचत 5 बाइट्स।

समझाने के लिए अनपैक्ड संस्करण का उपयोग करता है।

rS{%o~{;i@c:2{E-x%mu%x<wm
r                            [0..`x`], where `x` is input
 S                           Powerset
  {%o~                       Sort by length
      {;i@             w     For each element in the powerset
          c:2                All pairs
             {    m          Map each pair `[p,q] to
              E-                 `q-p`
                x%               `(q-p)%x`
                   u%        Count of unique modulo differences
                     x<      Loop until the count of unique modulo differences is larger than the input(`n`)
                             Now we have found a valid set in the powerset
                        m    Output the members of the set,one element per line.

आवश्यकता है कि लागू करके 0और 1दोनों जवाब के सदस्य हो, हम साथ Powerset उत्पन्न कर सकते हैं [2..x]के बजाय [0..x]और फिर जोड़ने 0और 1मैन्युअल Powerset में प्रत्येक तत्व के। यह अधिक कुशल है लेकिन 1विशेष रूप से इनपुट को संभालने की आवश्यकता है और अधिक बाइट्स का खर्च आता है।



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