क्या मेरे पास क्रमबद्ध अवशेषों के साथ एक जुड़वा है?


17

हम Rn को 2 , 3 , 5 और 7 द्वारा n के यूक्लिडियन डिवीजन के अवशेषों की सूची के रूप में परिभाषित करते हैं ।2357

एक पूर्णांक को देखते हुए n0 , आप यह पता लगाने की अगर वहाँ एक पूर्णांक मौजूद है 0<k<210 ऐसी है कि Rn+ का क्रमपरिवर्तन है Rn

उदाहरण

कसौटी पर खरा उतरता है n=8, क्योंकि:

  • हमारे पास R8=(0,2,3,1)
  • के लिए k=44 , हमारे पास Rn+k=R52=(0,1,2,3) हैं, जिनमें से एक क्रमपरिवर्तन है R8

कसौटी n=48 लिए नहीं मिली है , क्योंकि:

  • हमारे पास R48=(0,0,3,6)
  • सबसे छोटा पूर्णांक k>0 ऐसा है कि Rn+kR48 का क्रमचय है = k=210 ( 210 ( R258=(0,0,3,6) साथ ही)

नियम

  • आप या तो एक सत्य मूल्य का उत्पादन कर सकते हैं यदि k मौजूद है और एक मिथ्या मूल्य अन्यथा, या आपकी पसंद के दो अलग और सुसंगत मूल्य।
  • यह

संकेत

क्या आपको वास्तव में k गणना करने की आवश्यकता है ? शायद हो सकता है। या शायद नहीं।

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

n कुछ मान जिसके लिए k मौजूद है:

3, 4, 5, 8, 30, 100, 200, 2019

n कुछ मान जिनके लिए k मौजूद नहीं है:

0, 1, 2, 13, 19, 48, 210, 1999

जवाबों:


20

आर , 63 59 बाइट्स

s=scan()%%c(2,3,5,7);i=which(s<c(0,2,3,5));any(s[i]-s[i-1])

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

-4 बाइट्स ग्यूसेप के लिए धन्यवाद

(विवरण कैसे कंप्यूटिंग के बिना समस्या को हल करने के लिए के रूप में एक स्पॉइलर शामिल k ।)

स्पष्टीकरण: Let s शेष की सूची हो। ध्यान दें कि [1] <2, s [2] <3, s [3] <5 और s [4] <7। द्वारा चीनी शेष प्रमेय , वहाँ एक से मौजूद है k iff वहाँ का क्रमपरिवर्तन हैs , से अलगs है, जो बाधा पुष्टि करता है। व्यवहार में, यह सत्यापित किया जाएगा यदि निम्न में से एक स्थिति सत्यापित है:

  • s [2] <2 और s [2]! = s [1]
  • s [3] <3 और s [3]! = s [2]
  • s [४] <५ और s [४]! = s [३]

क्या आप बता सकते हैं कि क्रमपरिवर्तन से अलग क्यों है ? s
dfeuer

1
@ फ़ेडरर यह चाइनीज़ रेमिनेटर प्रमेय का परिणाम है; मैंने एक लिंक जोड़ा। यदि दो पूर्णांकों में एक ही रहता है modulo 2, 3, 5 और 7 (एक क्रमचय के बिना), तो दो पूर्णांक समान हैं modulo 2 * 3 * 5 * 7 = 210।
रॉबिन राइडर




5

सी # (विज़ुअल सी # इंटरएक्टिव कंपाइलर) , 125 42 38 36 बाइट्स

n=>n%7<5&5<n%35|n%5<3&3<n%15|-~n%6>3

@ Xnor के उत्तर का सीधा पोर्ट, जो @ RobinRyder के समाधान से दूर है।

सहेजे गए 4 बाइट्स @ अर्जन जोहानस को धन्यवाद!

@Arnauld को 2 और धन्यवाद दिए गए!

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


1
मैं XNOR की भाषाओं के लिए केवल संबंधों कि एक परिवर्तन पाया, लेकिन इस बात के लिए मदद करता है: 38 बाइट्स
Orjan Johansen

1
-~n%6/4>0बस नहीं है -~n%6>3?
अरनुलद


4

पायथन 2 , 41 बाइट्स

lambda n:n%5!=n%7<5or n%3!=n%5<3or-~n%6/4

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

रॉबिन राइडर के रूप में एक ही लक्षण वर्णन का उपयोग करता है । चेक n%2!=n%3<2को छोटा कर दिया जाता है-~n%6/4 । सामान्य रूप से लिखने से तीन स्थितियाँ छोटी हो गईं:

46 बाइट्स

lambda n:any(n%p!=n%(p+1|1)<p for p in[2,3,5])

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




2

वोल्फ्राम भाषा (गणितज्ञ) , 56 बाइट्स

Or@@(Min[s-#]>0&/@Rest@Permutations@Mod[#,s={2,3,5,7}])&

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

इनपुट मॉडुलो 2, 3, 5, 7 के अवशेषों के सभी गैर-पहचान परमिटों को ढूँढता है और जाँचता है कि उनमें से कोई भी {2,3,5,7}प्रत्येक समन्वय में नीचे है या नहीं। ध्यान दें कि Or@@{}है False




1

पीएचपी ,81 78 72 बाइट्स

while($y<3)if($argn%($u='235'[$y])!=($b=$argn%'357'[$y++])&$b<$u)die(T);

@ रॉबिन राइडर के जवाब पर एक दरार । इनपुट के माध्यम से होता है STDIN, आउटपुट 'T'अगर सत्य है, और ''यदि झूठा है तो खाली है ।

$ echo 3|php -nF euc.php
T
$ echo 5|php -nF euc.php
T
$ echo 2019|php -nF euc.php
T
$ echo 0|php -nF euc.php

$ echo 2|php -nF euc.php

$ echo 1999|php -nF euc.php

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

या फिर 73 के साथ बाइट्स 1या 0प्रतिक्रिया

while($y<3)$r|=$argn%($u='235'[$y])!=($b=$argn%'357'[$y++])&$b<$u;echo$r;

$ echo 2019|php -nF euc.php
1
$ echo 1999|php -nF euc.php
0

इसे ऑनलाइन (सभी परीक्षण मामलों) आज़माएं!

मूल उत्तर, 133 127 बाइट्स

function($n){while(++$k<210)if(($r=function($n){foreach([2,3,5,7]as$d)$o[]=$n%$d;sort($o);return$o;})($n+$k)==$r($n))return 1;}

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



1

05AB1E , 16 बाइट्स

Ƶ.L+ε‚ε4Åp%{}Ë}à

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

Ƶ.L          # Create a list in the range [1,209] (which is k)
   +         # Add the (implicit) input to each (which is n+k)
    ε        # Map each value to:
            #  Pair it with the (implicit) input
      ε      #  Map both to:
       4Åp   #   Get the first 4 primes: [2,3,5,7]
          %  #   Modulo the current number by each of these four (now we have R_n and R_n+k)
           { #   Sort the list
           #  After the inner map: check if both sorted lists are equal
           # After the outer map: check if any are truthy by taking the maximum
             # (which is output implicitly as result)

मेरा 05AB1E टिप देखें (यह समझने के लिए कि बड़े पूर्णांकों को कैसे संपीड़ित करें? ) क्यों Ƶ.है 209



1

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

8ÆR©PḶ+%Ṣ¥€®ċḢ$

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

मुझे यकीन है कि एक गोल्फ खिलाड़ी का जवाब है। मैंने एक सत्य मान की व्याख्या की है, जो शून्य नहीं है, इसलिए यहां कश्मीर के संभावित मूल्यों की संख्या है। यदि इसे दो अलग-अलग मूल्यों की आवश्यकता है, जो मुझे एक और बाइट की लागत देता है।

व्याख्या

8ÆR             | Primes less than 8 [2,3,5,7]
   ©            | Copy to register
    P           | Product [210]
     Ḷ          | Lowered range [0, 1, ..., 208, 209]
      +         | Add to input
         ¥€     | For each of these 210 numbers...
       %   ®    |   Modulo 2, 3, 5, 7
        Ṣ       |   And sort
            ċḢ$ | Count how many match the first (input) number’s remainders

1
सच बनाम झूठ के बारे में सब अच्छा है। सत्य और असत्य की मेटा सहमत परिभाषा का उपयोग करना (प्रभावी रूप से "भाषा का इफ़ेक्ट-और कंस्ट्रक्शन क्या होता है अगर कोई एक है) शून्य फ़ाल्सी है और नॉन-ज़ीरो सत्य है ( ?जेली में इफ़-इ -कंस्ट्रक्शन का निर्माण होता है; कुछ लोगों के लिए) कठिन प्रश्न)।
जोनाथन एलन

ओह, और आप बिना किसी लागत के अलग-अलग मूल्य प्राप्त कर सकते Ḣe$थे यदि आप चाहते थे :)
जोनाथन एलन

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