क्या मेरा नंबर अनोखा है?


21

में इस चुनौती हम कारक के पेड़ का उपयोग कर पूर्णांक हर सकारात्मक एन्कोड करने के लिए एक तरह से सीखा है।

यहाँ दिया गया है कि यह कैसे काम करता है:

  • खाली स्ट्रिंग का मान 1 है।

  • (S)जहां S केS मान के साथ कोई भी अभिव्यक्ति S वें अभाज्य का मूल्यांकन करता है ।

  • ABजहां Aऔर क्रमशः और बी केB मूल्यों के साथ अभिमानी अभिव्यक्ति हैं, मूल्य ए * बी है

उदाहरण के लिए यदि हम 7 का प्रतिनिधित्व करना चाहते हैं तो हम करेंगे

  7 -> (4) -> (2*2) -> ((1)(1)) -> (()())

इस पद्धति का उपयोग करके हम हर पूरी संख्या का प्रतिनिधित्व कर सकते हैं। वास्तव में कुछ संख्याएँ हम कई तरीकों से प्रस्तुत कर सकते हैं। क्योंकि गुणन गुणांक 10 दोनों है

((()))()

तथा

()((()))

उसी समय कुछ संख्याओं को केवल 1 तरीके से दर्शाया जा सकता है। उदाहरण के लिए 8 लें। 8 के रूप में ही प्रतिनिधित्व किया जा सकता है

()()()

और चूंकि हमारे सभी परमाणु समान हैं इसलिए हम उन्हें पुनः व्यवस्थित करने के लिए कम्यूटिविटी का उपयोग नहीं कर सकते हैं।


तो अब सवाल यह है कि "कौन सी संख्याओं को केवल 1 तरीके से दर्शाया जा सकता है?"। पहला अवलोकन वह है जो मैंने अभी-अभी वहीं करना शुरू किया है। ऐसा लगता है कि परिपूर्ण शक्तियों में कुछ विशेष गुण होते हैं। आगे की जांच के तहत हम 36 पा सकते हैं, जो कि 6 2 एक आदर्श शक्ति है, लेकिन कई अभ्यावेदन हैं।

(())()(())()
(())()()(())
()(())()(())
()(())(())()
()()(())(())

और यह समझ में आता है क्योंकि 6 पहले से ही पुनर्व्यवस्थित है, इसलिए हम 6 में से जो भी संख्या बनाते हैं वह भी पुन: प्रयोज्य होना चाहिए।

तो अब हमारे पास एक नियम है:

  • एक संख्या का एक अनूठा प्रतिनिधित्व होता है यदि यह एक अद्वितीय प्रतिनिधित्व के साथ किसी संख्या की सही शक्ति है।

यह नियम हमें यह निर्धारित करने में कम करने में मदद कर सकता है कि क्या एक मिश्रित संख्या अद्वितीय है अगर एक प्रमुख संख्या अद्वितीय है। अब जब हमारे पास वह नियम है तो हम यह पता लगाना चाहते हैं कि एक अभाज्य संख्या क्या है । यह वास्तव में बहुत स्पष्ट है। यदि हम एक अद्वितीय संख्या लेते हैं और इसे कोष्ठकों में लपेटते हैं, तो परिणाम अद्वितीय होना चाहिए, और, यदि n कई अभ्यावेदन करते हैं, तो दूसरे तरीके से जा रहे हैं, क्योंकि n अभाज्यता के कई अभ्यावेदन होने चाहिए। यह दूसरा नियम देता है:

  • N वें प्रधानमंत्री अद्वितीय यदि और केवल यदि है n अद्वितीय है।

ये दोनों नियम पुनरावर्ती हैं, इसलिए हमें आधार मामले की आवश्यकता है। सबसे छोटी अद्वितीय संख्या क्या है? किसी को 2 कहने का प्रलोभन दिया जा सकता है क्योंकि इसकी मात्र (), लेकिन 1, खाली स्ट्रिंग, और भी छोटी है और अद्वितीय है।

  • 1 अद्वितीय है।

इन तीन नियमों से हम यह निर्धारित कर सकते हैं कि एक संख्या में एक अद्वितीय कारक वृक्ष है या नहीं।

कार्य

आपने इसे आते देखा होगा, लेकिन आपका कार्य एक सकारात्मक पूर्णांक लेना है, और यह निर्धारित करना है कि क्या यह अद्वितीय है। आपको या तो एक प्रोग्राम या फ़ंक्शन लिखना चाहिए जो इस गणना को करता है। आपको दो संभावित मूल्यों में से एक का उत्पादन करना चाहिए, ये मूल्य आपके ऊपर हैं, लेकिन किसी को "हां" का प्रतिनिधित्व करना चाहिए, आउटपुट अद्वितीय होने पर इनपुट अद्वितीय है और किसी को "नहीं" होने का प्रतिनिधित्व करना चाहिए।

आपके उत्तर बाइट्स में कम बाइट के साथ बेहतर होने चाहिए।

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

यहाँ पहली जोड़ी अद्वितीय संख्याएँ हैं:

1
2
3
4
5
7
8
9
11
16
17
19
23
25
27
31

सुझाए गए परीक्षण मामले

5381 -> Unique

ऐसा लगता है कि OEIS A214577 किसी न किसी तरह से संबंधित है, इसलिए यदि आपको अधिक परीक्षण मामलों की आवश्यकता है, लेकिन मुझे नहीं पता कि वे आपके जोखिम पर समान उपयोग करते हैं।


मेरा मानना ​​है कि प्रमुख कारकों को हल करना था लेकिन जो भी हो।
निसा

1
@JonathanAllan नहीं, यह सब यहाँ है।
निसा

सुझाया गया टेस्ट केस: 5381
निसा

@StephenLeppik टेस्ट केस जोड़ा गया, धन्यवाद।
गेहूं जादूगर

1
@ H.PWiz मैं यह कहने जा रहा हूं कि एक पूर्ण कार्यक्रम आउटपुट के रूप में त्रुटि कर सकता है क्योंकि यह एक प्रोग्राम के लिए आउटपुट का एक रूप है, लेकिन एक फ़ंक्शन को एक मान वापस करना होगा।
गेहूं जादूगर

जवाबों:


9

भूसी , 11 10 बाइट्स

एक बाइट को ज़र्ब के लिए धन्यवाद!

Ωεo?oṗ←¬Ep

1अद्वितीय के लिए रिटर्न , 0अन्यथा

इसे ऑनलाइन आज़माएं! या पहले 50 को वापस कर रहा है

स्पष्टीकरण:

Ωε              Until the result is small (either 1 or 0), we repeat the following
         p     Get the prime factors
  o?           If ...
        E      they are all equal:
    ȯṗ←           Get the index of the first one into the primes
               Else:
       ¬          Not the list (since non-empty lists are truthy, this returns 0)

ओह, और आपका स्पष्टीकरण " ȯp←" कहता है ।
आउटगॉल्फ

@EriktheOutgolfer अच्छा पकड़, फिक्स्ड
H.PWiz

मुझे लगता है कि सूची ṁ¬केवल ¬उस शाखा में गैर-रिक्त होनी चाहिए।
ज़गरब

@ ज़र्ब ओह फैंस, मुझे लगता है कि आपने मुझे वह टिप दी है
H.PWiz

7

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

चारों ओर बहुत कुछ है!

ÆET0ṪḊ?µl¿

एक पॉजिटिव पूर्णांक लेने और वापस लौटने के लिए एक मोनोएडिक लिंक 1 यदि यह अद्वितीय है या 0नहीं तो रहा है ।

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

कैसे?

ÆET0ṪḊ?µl¿ - Link: number, n     e.g. 11          or 13            or 20
         ¿ - while:
        l  - ...condition: (left) logarithm with base (right)
           -               note: x log 0 and x log 1 both yield None, which is falsey
       µ   - ...do the monadic chain: (first pass shown)
ÆE         -   prime exponent array   [0,0,0,0,1]    [0,0,0,0,0,1]    [2,0,1]
  T        -   truthy indexes         [5]            [6]              [1,3]
      ?    -   if:
     Ḋ     -   ...condition: dequeue (i.e. if length > 1)
   0       -   ...then: literal zero   -              -               0
    Ṫ      -   ...else: tail           5              6               -
           - end result                1              0               0

रुको, लघुगणक, क्या ?!

लूप के कुछ उदाहरणों के माध्यम से चलते हैं।

यदि n=31( 31 1 , ग्यारहवाँ प्रधान):

log test # |  left, x |  right, b |  x log b
-----------+----------+-----------+----------
         1 |       31 |        31 |    1.000 -> continue
         2 |       11 |        31 |    0.698 -> continue
         3 |        5 |        11 |    0.671 -> continue
         4 |        3 |         5 |    0.683 -> continue
         5 |        2 |         3 |    0.631 -> continue
         6 |        1 |         2 |    0.000 -> stop, yielding left = 1

यदि n=625( 5 4 ):

log test # |  left, x |  right, b |  x log b
-----------+----------+-----------+----------
         1 |      625 |       625 |    1.000 -> continue
         2 |        3 |       625 |    0.171 -> continue
         3 |        2 |         3 |    0.631 -> continue
         4 |        1 |         2 |    0.000 -> stop, yielding left = 1

यदि n=225( 5 2 × 3 2 ):

log test # |  left, x |  right, b |  x log b
-----------+----------+-----------+----------
         1 |      225 |       225 |    1.000 -> continue
         2 |     *  0 |       225 |-inf+nanj -> continue
         3 |     ** 0 |         0 |     None -> stop, yielding left = 0

*The dequeued list was not empty
**Tailing an empty list in Jelly yields 0

4

एपीएल (डायलॉग) , 42 बाइट्स

CY'dfns'
{1≥⍵:11=≢∪r3pco⍵:∇11pcor0}

तिवारी के ⎕CY'dfns'साथ प्रयोग करना dfnsबहुत संभव नहीं है।


मेरा उत्तर आपके लिए काफी समान था, हालाँकि, मैंने पहला संस्करण लगभग 4 घंटे पहले
लिखा

@ H.PWiz देखो यार, मैं वास्तव में परवाह नहीं करता हूं जब लोग एक ही भाषा में प्रस्तुत करते हैं, हालांकि मैं आमतौर पर टिप्पणी करना पसंद करता हूं जब मुझे छोटा समाधान मिलता है, लेकिन यह लगभग एक ही है। मैं आपको इसे बनाए रखने में कोई आपत्ति नहीं करता, लेकिन मुझे ऐसे उत्तर मिलते हैं जो बहुत ही बेकार लगते हैं। समय के बारे में - कि यह कैसे काम करता है। मैंने दर्जनों जवाब दिए क्योंकि कोई और पहले आया था। मैं (और मुझे विश्वास है कि बाकी) मज़े के लिए कर रहे हैं, असली प्रतियोगिता नहीं।
ऊरीएल

इसके चारों ओर इतनी देर लगने के लिए क्षमा करें, लेकिन मैंने अपना उत्तर हटा दिया है। पीछे मुड़कर देखें, तो एक टिप्पणी लगती है कि यह अधिक उचित होगा। मुझे लगता है, चूंकि मैं उस समय एपीएल के लिए नया था, इस तरह के जवाब के लिए काफी महत्वपूर्ण मात्रा में प्रयास की आवश्यकता थी, और मुझे लगा कि एक टिप्पणी ने इसे बर्बादी की तरह महसूस किया होगा
H.PWiz

2

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

ÆfẋE$ḢÆCµl¿

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

-2 जोनाथन एलन द्वारा एक बहुत ही प्रतिभाशाली चाल के लिए धन्यवाद ।

H.PWiz की भूसी एल्गोरिथ्म का उपयोग करना।


चूंकि बेस एक में लॉग इन करें और शून्य उपज दोनों Noneआप ÆfẋE$ḢÆCµl¿11 के लिए कर सकते हैं :)
योनातन एलन

@JonathanAllan अरे, यह पहली बार है! अच्छा लगा।
एरिक आउटफोलर

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