कोई सह-प्रधान पड़ोसी नहीं


33

सकारात्मक पूर्णांक की एक सूची को देखते हुए, आउटपुट कि प्रत्येक समीपवर्ती जोड़ी पूर्णांक एक प्रमुख कारक साझा करता है। दूसरे शब्दों में, आउटपुट सत्य यदि और केवल सूची में कोई दो पड़ोसी पूर्णांक सह-प्रधान नहीं हैं।

अभी तक अन्य शब्दों में: सकारात्मक पूर्णांक [ 12 … ए एन ] की सूची को देखते हुए , आउटपुट

       gcd (एक 1 , एक 2 )> 1 && gcd (एक 2 , एक 3 )> 1 && ... && gcd (एक n-1 , एक n )> 1।

सूची में हमेशा कम से कम दो तत्व होंगे (n। 2)।

तथापि…

यह चुनौती भी : आपके जवाब में कोडपॉइंट्स (जो भी कोडपेज हो सकता है) आपके प्रोग्राम की जांच के लिए आवश्यक शर्त को पूरा करना चाहिए।

उदाहरण के लिए, print 2एक वैध कार्यक्रम है। यूनिकोड कोडपॉइंट्स की एक सूची के रूप में यह [112 114 105 110 116 32 50 50] है , जो इस स्थिति को संतुष्ट करता है: 112 और 114 2 का एक कारक साझा करता है ; और 114 और 105 में 3 का कारक है , आदि।

हालांकि, एक वैध कार्यक्रम में नहीं हो mainसकता है (क्षमा करें!), के रूप में यूनिकोड कोडपॉइंट्स और , अर्थात् 109 और 97 , नकल के हैं। (शुक्र है, आपके प्रस्तुत करने के लिए एक पूर्ण कार्यक्रम नहीं होना चाहिए!)ma

आपके प्रोग्राम में कोडपॉइंट 0 होने की अनुमति नहीं है।

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

Truthy:

[6 21] -> 1
[502 230 524 618 996] -> 1
[314 112 938 792 309] -> 1
[666 642 658 642 849 675 910 328 320] -> 1
[922 614 530 660 438 854 861 357 477] -> 1

Falsy:

[6 7] -> 0
[629 474 502 133 138] -> 0
[420 679 719 475 624] -> 0
[515 850 726 324 764 555 752 888 467] -> 0
[946 423 427 507 899 812 786 576 844] -> 0

यह : बाइट्स जीत में सबसे छोटा कोड।


8
सामान्य प्रोग्रामिंग भाषा में इस चुनौती का प्रयास करने वाले किसी भी व्यक्ति के लिए, यह उन पात्रों की सूची है, जिनके पास ASCII में प्रमुख कोडपॉइंट हैं %)+/5;=CGIOSYaegkmq\DEL:।
क्रिस्टियन लुपस्कु

@ लियन क्या ट्रुथ्स लगातार होना चाहिए?
H.PWiz

1
@ H.PWiz नहींं! -
लिन

मैंने वास्तव में कुछ सामान्य (गैर-गोल्फ) लंग्स के लिए यह करने का इरादा किया था, और मुझे उम्मीद थी कि जब मैंने देखा कि मैं print 2मान्य था, लेकिन );=aeप्रधानमंत्री वास्तव में कठिन है, तो मैं इस पर विचार नहीं किया ... मुझे आश्चर्य है कि हास्केल जैसी कोई चीज हो सकती है प्रतिस्पर्धा होती है?
लिन

यह प्रतिबंध इस प्रश्न के उलट की तुलना में आसान है , मान लें कि कोई भी 0x02 बाइट का उपयोग नहीं करता है। उस प्रश्न को गणितज्ञ, लोगो, हास्केल, पायथन, पर्ल, टीआई-बेसिक में मान्य उत्तर मिला। यह पहले से ही एक हास्केल है, मुझे लगता है कि गणितज्ञ असंभव है, लेकिन लोगो को संभव होने की बहुत संभावना है, हालांकि मैंने अभी तक समाधान का निर्माण नहीं किया है।
user202729

जवाबों:


15

MATL , 14 बाइट्स

!TM1*Zdl2$Xdl-

यह नॉनज़रो नंबरों के एक गैर-खाली कॉलम वेक्टर को सत्य के रूप में या सदिश के रूप में कम से कम शून्य प्रविष्टि वाले आउटपुट देता है।

व्याख्या

!     % Implicit input. Transpose
TM    % Push input to latest function again
1*    % Multiply by 1 (does nothing, but matches factors)
Zd    % Compute gcd with broadcast: matrix of gcd of all pairs
l     % Push 1
2$    % The next function will use 2 inputs
Xd    % Extract diagonal 1 (i.e. that below the main diagonal) from the matrix
l-    % Subtract 1 from each entry. Implicitly display

4
एक जवाब के लिए बधाई जो करता संतुष्ट प्रतिबंधित स्रोत आवश्यकता!
द एग्री द आउटग्राफर

13

हास्केल , 103 100 बाइट्स

संपादित करें:

  • -3 बाइट्स: d<-fzपिछली दो लाइनों को मर्ज करने और छोटा करने के लिए एक गार्ड का इस्तेमाल किया ।

fमुख्य कार्य है, जो पूर्णांकों की सूची लेता है और रिटर्न देता है Bool

ध्यान दें कि पहले दो ԁएस (केवल) सिरिलिक (कोमी) यूनिकोड वर्ण हैं, और पहले वाले से पहले एक टैब चरित्र है।

f	ԁ=zb[ԁ]id
zb[h:p:l]fz=z h p&&zb[p:l]fz
zb l fz=z 0 2
z 0z=z>z^0
z f fz|f<fz=z fz f|d<-fz=z d$f-d

इसे ऑनलाइन आज़माएं! या इसे स्वयं पर परखें।

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

  • fमुख्य कार्य है। यह सब ԁएक एकल सूची में अपने तर्क को लपेटता है (क्योंकि मुख्य ASCII मान )कोष्ठक को वर्ग कोष्ठक की तुलना में उपयोग करने के लिए बहुत अधिक अजीब बनाता है) और उसके zbसाथ कॉल करने के लिए और एक डमी तर्क (हास्केल फ़ंक्शन idहोता है, जिसमें फिट होने के लिए सिर्फ सही वर्ण होते हैं यहाँ)।
    • =]सादे ASCII के साथ दोनों के अलावा फिट होने के लिए समान वर्ण प्राप्त करना, इसलिए तर्क को 2-बाइट यूनिकोड वर्ण CYRILLIC SMALL LETTER KOMI DE (ԁ), कोडपॉइंट मान के साथ नाम दिया गया है 3*7*61=U+0501, जो उन सभी के साथ फिट बैठता है और [
      • चूंकि कोडपॉइंट भी नहीं है (सबसे छोटा विकल्प जो एक कानूनी पहचानकर्ता है और यहां तक ​​कि तीन बाइट्स का भी उपयोग करता है), इससे पहले एक स्थान के बजाय टैब वर्ण का उपयोग करना आवश्यक है।
      • एक सात बाइट्स सादा ASCII विकल्प तर्क का नाम बदलने के लिए है f fz|bf<-fz=zb[bf]fz:।
  • zbदो तर्क लेते हैं, एक एकल सूची जिसकी तत्व संख्याओं की वास्तविक सूची है जिस पर पुनरावृत्ति की जा रही है, और फ़ंक्शन के पहले एक डमी तर्क की fzआवश्यकता है । z=
    • जब आंतरिक सूची में कम से कम दो तत्व होते हैं, तो फ़ंक्शन zको पहले दो (नाम hऔर p) के साथ बुलाया जाता है , और यदि वह रिटर्न देता है True, तो सूची zbकी पूंछ पर पुनरावृत्ति होती p:lहै।
    • यदि आंतरिक सूची में दो से कम तत्व हैं, तो zbरिटर्न True। चूंकि =चरित्र का पालन करने की आवश्यकता है z, ऐसा करने का सबसे सरल तरीका उस zफ़ंक्शन की कॉल का उपयोग करना है जिसे स्वयं वापस लौटने के लिए जाना जाता है True
  • zदो तर्क लेता है और घटाव (प्रत्येक अन्य प्रासंगिक पूर्णांक विभाजन या gcd फ़ंक्शन अनुपलब्ध है) का उपयोग करके अपने सबसे बड़े सामान्य भाजक की गणना करता है, Trueयदि यह एक से अधिक हो तो वापस लौटता है ।
    • जब पहली दलील होती है 0, तो दूसरा तर्क gcd होने के साथ ही पुनरावृत्ति समाप्त हो जाती है । इस लाइन पर दूसरे तर्क का भी नाम दिया गया है z। चरित्र 1यहाँ अजीब है इसलिए z^0नंबर एक पाने के लिए उपयोग किया जाता है।
    • अन्यथा, यदि पहला तर्क fदूसरे से छोटा है fz, तो उन्हें अदला-बदली की जाती है और zपुनरावृत्ति होती है।
    • अन्यथा, छोटे तर्क को बड़े से घटाया जाता है, फिर zपुनरावर्तन होता है (तर्कों की अदला - बदली भी की जाती है, हालांकि यह केवल कोष्ठकों से बचने के लिए है।)

2
मुझे पता था कि कुछ गैर-गोल्फ भाषा होनी चाहिए जो इसे खींच सकती है!
लिन

2
@ लियन यह वास्तव में इस तरह की चुनौती में हास्केल की मदद करता है कि इसमें केवल एकल-वर्ण टोकन के साथ एक काफी अभिव्यंजक सिंथेटिक्स उपसमुच्चय है। मुझे लगता है कि गोल्फ की भाषा के बारे में आधा रास्ता है।
अर्जन जोहान्सन

सिरिलिक के कारण, क्या यह वास्तव में 100 बाइट्स है? कोड गोल्फ स्नातक स्तर की पढ़ाई userscript 102 UTF-8 बाइट जानकारी दी है, लेकिन अगर यह के बिल्कुल सटीक / गिनती करने के लिए सही तरीका है कि यहाँ बाइट्स मैं नहीं जानता। कोई फर्क नहीं पड़ता कि कितने बाइट्स, यह वास्तव में प्रभावशाली है!
मार्क एस।

1
@निशान। TIO 100 बाइट्स (और 98 चार्ट) की रिपोर्ट करता है। मुझे संदेह है कि आपको टैब वर्ण द्वारा पकड़ा गया था, जिसे एसई 3 रिक्त स्थान के रूप में प्रदर्शित करता है (जो तब इस तरह से कॉपी किया जाता है)। मुझे लगता है कि मैंने किसी को बचने के लिए पूर्व टैग का उपयोग करते देखा है, मुझे इसे ठीक करने का प्रयास करने दें।
अर्जन जोहान्सन

@निशान। किया हुआ। हालांकि मुझे संदेह है कि शायद यह भ्रमित हो सकता है कि उपयोगकर्ताओं को और भी अधिक।
अर्जन जोहान्सन

10

05AB1E , 8 बाइट्स

कोड

ü‚ÒüÃP≠P

05AB1E एन्कोडिंग का उपयोग करता है , जो हमें कोड बिंदुओं की निम्नलिखित सूची प्रदान करता है:

hex: [0xFC, 0x82, 0xD2, 0xFC, 0xC3, 0x50, 0x16, 0x50]
dec: [252,  130,  210,  252,  195,  80,   22,   80]

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

व्याख्या

चूंकि जीसीडी ऑपरेटर ( ¿) में एक प्रमुख कोड बिंदु है जो मुझे कॉपीराइट की जांच करने के अन्य तरीकों की तलाश में था:

ü‚          # Get an array of adjacent pairs of the input
  Ò         # Factorize both elements of each pair in the array
   üà       # For each pair, get the intersection of both prime factorization lists
     P      # Product of each intersection (this leaves 1 when there is no intersection)
      ≠     # Check for each element whether it does not equal 1
       P    # Product of the booleans

05AB1E के कोड पृष्ठ में इसके क्या अंक हैं? क्या आप उन्हें उत्तर में जोड़ सकते हैं?
श्री Xcoder

@ Mr.Xcoder ने कहा
अदनान

के लिए किसी भी कारण Òसे अधिक f?
मैजिक ऑक्टोपस Urn

10

भूसी , 8 बाइट्स

ट्रू इनपुट के लिए यह एक सकारात्मक पूर्णांक लौटाता है, फल्सी के लिए यह 0 देता है

←▼`Ṡt(ż⌋

इसे ऑनलाइन आज़माएं!और अपने स्वयं के कोडपॉइंट पर परीक्षण किया गया

भूसी के कोडपेज का उपयोग करता है

Source -- [ ←  , ▼  , `  , Ṡ  , t  , (  , ż  , ⌋  ]
Hex    -- [0x06,0xbd,0x60,0xd0,0x74,0x28,0xeb,0x8d]
Dec    -- [6   ,189 ,96  ,208 ,116 ,40  ,235 ,141]

व्याख्या

          -- implicit input, e.g                                  [63,36,18,3]
  `       -- flip the args of the next function
   Ṡ      -- some combinator (Ṡ f g x = f (g x) x)
    t     -- tail                                                 [36,18,3]
      ż   -- zipWith (note, keeps trailing elems of longer list)  [(63,36),(36,18),(18,3),(3)]
       ⌋  -- gcd                                                  [9,9,3,3]
     (    -- used just to match restricted source criteria
 ▼        -- minimum of the list                                    3
←         -- minus 1                                                2

स्पष्टीकरण के लिए आपके द्वारा उपयोग किए गए नोटेशन को क्या कहा जाता है ? मैं इसे डॉक्स पर कमांड पेज पर "टाइप" कॉलम में भी देखता हूं और अपना सिर इधर-उधर नहीं कर सकता इसलिए इसे देखना चाहता हूं ताकि मैं इसे सीख सकूं।
जोनाथन एलन

@JonathanAllan यह हास्केल के सिंटैक्स में फ़ंक्शन की परिभाषा है । यह Ṡ(f,g,x) = f(g(x),x)अधिक से अधिक मुख्यधारा की भाषाओं में अनुवाद करता है।
ज़र्गब


यद्यपि, जब फ़्लिप किया जाता है, तो यह हो जाता है`Ṡ g f x = Ṡ f g x = f (g x) x
H.PWiz

1
@JonathanAllan यदि आप भूसी चैट रूम में शामिल होते हैं , तो हम वहां बेहतर तरीके से समझाने की कोशिश कर सकते हैं।
ज़गारब

5

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

äj d¹¥Z

इसे ऑनलाइन टेस्ट करें!

कोड अंक:

Char    ä   j       d   ¹   ¥   Z
Hex    e4  6a  20  64  b9  a5  5a
Dec   228 106  32 100 185 165  90

व्याख्या

 äj d¹ ¥ Z
Uäj d) ==Z
             Implicit: U = input array, Z = 0
Uä           For each pair of items in the array:
  j            Return whether the two items are coprime.
    d)       Return true if any items are truthy, false otherwise.
       ==Z   Return whether this is equal to 0 (false -> true, true -> false).
             Implicit: output result of last expression

5

जेली , 11 9 बाइट्स

,Pnælð2\P

@ जोनाथन एलन को 2 बाइट्स धन्यवाद से बचाया ।

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

जेली का अपना कोड-पेज है और प्रत्येक वर्ण के कोडपॉइंट हैं

Chr Hex Dec
,   2c   44
P   50   80
n   6e  110
æ   16   22
l   6c  108
ð   18   24
2   32   50
\   5c   92
P   50   80

यह जाँच करके गैर-कोप्राइम संख्या के लिए परीक्षण lcm(a, b) != a*b। एक छोटा सा समाधान हो सकता है जैसा कि मैंने अभी भी कोडपॉइंट वाले पात्रों के लिए फ़िल्टर किया है।

व्याख्या

,Pnælð2\P  Input: array A
      2\   For each overlapping sublist of size 2
     ð       Reduce it using this dyad
,              Pair
 P             Product
  n            Not equals, 1 if true else 0
   æl          LCM
        P  Product

प्रतिभाशाली! यह अविश्वसनीय है: O
श्री Xcoder

,यहाँ तक कि आप æln,P¥ð2\दो कम के लिए कर सकते हैं । संपादित करें: मैंने अनुगामी को गिरा दिया P, कि एक को कम करें: पी)
जोनाथन एलन

अरे हाँ, यहां तक ​​कि तर्कों को स्वैप करें :)
जोनाथन एलन

5

टीआई-बेसिक, 38 बाइट्स

Input L1:ΔList(cumSum(L1:augment(Ans+V,V+{0:2>sum(AnsL1=lcm(Ans+V,V+L1

जैसा कि यहां सूचीबद्ध है, TI-BASIC को एक या दो-बाइट टोकन में टोकन दिया गया है

इस समाधान के सबसे महत्वपूर्ण भाग थे:

  1. अल्पविराम टोकन एक अभाज्य संख्या (43) है, जो मुझे इसे 43 के गुणक के साथ घेरने के लिए मजबूर करता है (इस मामले में V टोकन, जो 86 है)।

  2. Gcd (टोकन एक बड़ी अभाज्य संख्या (47881) है, जिसका अर्थ है कि इसका उपयोग बिल्कुल नहीं किया जा सकता है।

इस कार्यक्रम के लिए टोकन निम्नलिखित हैं:

token     hex     dec
Input     0xDC    220
L1        0x5D00  23808
:         0x3E    62
ΔList(    0xBB2C  47916
cumSum(   0xBB29  47913
L1        0x5D00  23808
:         0x3E    62
augment(  0x14    20
Ans       0x72    114
+         0x70    112
V         0x56    86
,         0x2B    43
V         0x56    86
+         0x70    112
{         0x08    8
0         0x30    48
:         0x3E    62
2         0x32    50
>         0x6C    106
sum(      0xB6    182
Ans       0x72    114
L1        0x5D00  23808
=         0x6A    106
lcm(      0xBB08  47880
Ans       0x72    114
+         0x70    112
V         0x56    86
,         0x2B    43
V         0x56    86
+         0x70    112
L1        0x5D00  23808

व्याख्या

Input L1:                   Prompt the user to input L1.

ΔList(cumSum(L1:            Take the differences of the prefix sum of L1,
                            which in effect removes the first element (result in Ans).

augment(Ans+V,V+{0:         Append a 0 to the end of Ans.
                            V defaults to 0, so adding it is a no-op.
                            Ans now holds L1 shifted to the left by one element,
                            with a 0 shifted in.

      AnsL1=lcm(Ans+V,V+L1  Take the least common multiple of each corresponding element
                            of Ans and L1, and check if each is equal to their product.
                            This returns a list of booleans, each 1 corresponding to
                            a co-prime pair. The last element (having been paired with 0)
                            will always be 1.

2>sum(                      Returns 1 if there is at most one 1 in the list, else 0.
                            Since the last element is always 1, this means
                            we return 1 only if there are no co-prime pairs.

3

अजगर , 15 बाइट्स

&F.bPiFNP.TtBQQ

इसे यहाँ आज़माएँ या टेस्ट सूट देखें।

यह एरिक द आउटगॉल्फ और मिस्टर एक्सकोडर के बीच एक सहयोगात्मक प्रयास है । सत्य के लिए एक असंगत मूल्य (गैर-खाली सूची) लौटाता है, और झूठा के लिए खाली सूची।


ASCII मान

[38, 70, 46, 98, 80, 105, 70, 78, 80, 46, 84, 116, 66, 81, 81]

जो निम्नलिखित कारकों को साझा करते हैं:

[2, 2, 2, 2, 5, 35, 2, 2, 2, 2, 4, 2, 3, 81]

व्याख्या

&F.bPiFNP.TtBQQ
           tBQ   Return [Q, Q[1:]] (Q = eval first line of input)
         .T      Transpose ^ without cropping absences
        P        Remove last element of ^
  .b          Q  Map in parallel on ^ (N) and Q (Y, ignored)
     iFN           GCD of N
    P              Prime factors of ^ (P(1) = [])
&F               Left fold (reduce) the result of the map with Logical AND (short-circuiting)

आवश्यकता के बिना , यह एक ही कार्य को पूरा करने वाला एक 7 5-बाइट संस्करण होता ( FryAmTheEggman के लिए -2 धन्यवाद ):

-1iVt

व्याख्या

-1iVtQQ  Implicit QQ at the end
    tQ   Return Q[1:]
  iV  Q  Vectorized GCD on ^ and Q
-1       Remove every element of ^ from [1] (implicit singleton)

जिज्ञासा से बाहर, आपको Qआखिर में एस की आवश्यकता क्यों है ?
ETHproductions

@ETHproductions क्योंकि .bपरिवर्तनशील आवृत्तियां हैं , और निहित इनपुट का उपयोग करने का मतलब है कि यह तब (2) के बजाय सबसे कम (1) उठाएगा ।
आउटगोल्फर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.