सुपरबंडेंस निर्धारित करें


21

एक सुपरबंडेंट नंबर एक पूर्णांक n है जो विभाजक राशि फ़ंक्शन σ के साथ अपने अनुपात के लिए एक नई ऊपरी सीमा निर्धारित करता है । दूसरे शब्दों में, यदि सभी सकारात्मक पूर्णांक x के लिए n केवल से कम है, तो n अतिरेक है

σ(n)n>σ(एक्स)एक्स

कुछ मूल्यों के लिए:

n   σ(n)   σ(n)/n   superabundant
1   1      1.0000   yes
2   3      1.5000   yes
3   4      1.3333   no
4   7      1.7500   yes
5   6      1.2000   no
6   12     2.0000   yes
7   8      1.1429   no
8   15     1.8750   no
9   13     1.4444   no

इनकी लंबी सूची (परीक्षण मामलों के लिए) OEIS A004394 पर देखी जा सकती है ।

एक अत्यधिक अनुशंसित नकारात्मक परीक्षण मामले (यदि आपका दुभाषिया इसे संभाल सकता है) 360360 है, क्योंकि यह अंतिम सुपरबंडेंट संख्या के साथ संबंध रखता है।

चुनौती

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

जैसा कि यह , बाइट्स जीत में सबसे छोटा जवाब है।

जवाबों:


7

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

Æs÷$ÞṪ=

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

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

Æs÷$ÐṀ⁼W

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

परीक्षण सूट!

व्याख्या

Æs Æ $ ÐṀ⁼W ~ पूर्ण कार्यक्रम (मानद)।

    ÐṀ ~ अधिकतम लिंक मूल्य (ऑटो-रंग) के साथ तत्वों को रखें।
Isors ~ भाजक राशि।
  । $ ~ वर्तमान तत्व से विभाजित करें।
      ⁼W ~ एक सिंगलटन में लिपटे इनपुट के साथ समानता की जाँच करें।
         ~ (360360 जैसे पूर्णांक के लिए)

मुझे लगता है कि आप Æs÷$ÐṀ=7 बाइट्स कर सकते हैं । मुझे पता ही नहीं चला ÐṀकि, यह जानना उपयोगी है।
देलनान

@dylnan नहीं मैं नहीं कर सकता। यद्यपि इसे ऑनलाइन परीक्षण नहीं किया जा सकता, लेकिन यह इसके लिए विफल है 360360। वास्तव में, यह मेरा प्रारंभिक संस्करण था
श्री एक्सकोडर

इसके लिए असफल क्यों होगा 360360?
देलनान

@dylnan 360360वह पहला नंबर है जिसके लिए वह असफल होगा (मुझे लगता है), क्योंकि यह एक परिणाम को टाई करने वाला पहला नंबर है जो पहले हुआ था। (और हमारा परिणाम होगा [0, 1])
श्री एक्सकोडर

@ Mr.Xcoder मैं देख रहा हूँ, धन्यवाद
dylnan



4

ऑक्टेव , 41 बाइट्स

@(n)([~,p]=max((x=1:n)*~mod(x,x')./x))==n

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

व्याख्या

@(n)                                       % Define anonymous function of n
                x=1:n                      % Range from 1 to n. Call that x
                        mod(x,x')          % n×n matrix of all pair-wise moduli
                       ~                   % Logical negate. True means it's a divisor
               (     )*                    % Matrix-multiply x times the above matrix
                                           % (gives the dot product of vector x times
                                           % each column of the matrix)
                                 ./x       % Divide each column by each entry in x
     [~,p]=max(                     )      % Index of first occurrence of maximum
    (                                )==n  % Does it equal n?

3

जे , 35 बाइट्स

समस्या को खोजने के लिए और इसे ठीक करने के लिए कोल करने के लिए धन्यवाद!

[:([:*/{:>}:)@(%~>:@#.~/.~&.q:)1+i.

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


1
इसके लिए विफल रहता है 360360(अधिक विवरण के लिए चुनौती देखें: एक अत्यधिक अनुशंसित नकारात्मक परीक्षण मामला 360360 है, क्योंकि यह अंतिम अतिरेक नंबर के साथ संबंध रखता है। )
श्री एक्सकोडर

1
+3 बाइट्स के लिए निश्चित। इसे ऑनलाइन आज़माएं । गोल्फ पर काम करना। मुझे #.~बहुत पसंद है (ईमानदारी से पूरे डिविज़न राशि समारोह वास्तव में अच्छा है)। क्या गलत था btw यह है कि, हालांकि करने का विचार {:=>./चतुर है, यह सवाल के "अधिक से अधिक" भाग को संतुष्ट नहीं करता है।
कोल

1
यहाँ मैं सिग्मा फ़ंक्शन को बदलने के लिए आया हूं, जो वर्तमान में एक ही लंबाई पर है (1#.{:(]*0=|~)])\ :। हालांकि इसके साथ कुछ गलत है, शायद आपके पास कुछ विचार हैं?
कोल

1
@cole डिवोर्स फंक्शन के योग का श्रेय इस निबंध में रोजर हुई को जाता है । मैंने एक और सिग्मा फ़ंक्शन लिखना शुरू कर दिया, लेकिन 9 बाइट्स तक पहुंचने के बाद मैं रुक गया और फैसला किया कि यह मुख्य कारक के साथ एक से कम नहीं होगा। समस्या को ठीक करने के लिए धन्यवाद!
गैलेन इवानोव

@cole मेरे पास आए दिव्यांगों के लिए सबसे छोटी अन्य क्रिया यह है: (1#.]*0=|~)1+i.यह एक हुक है और आसानी से फिट नहीं होती है हालांकि :)
गैलेन इवानोव

3

जूलिया 0.6 , 52 बाइट्स

n->indmax(sum(x for x=1:m if m%x<1)//m for m=1:n)==n

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

यह समाधान समानता के मामले में शुद्धता सुनिश्चित करने के लिए तर्कसंगत संख्याओं का उपयोग करता है। (360360 परीक्षण में लगभग 10 मिनट लगे।)

फ्लोटिंग पॉइंट का उपयोग करते हुए, बाएं बाइट के साथ 2 बाइट्स बचाए जा सकते हैं:

n->indmax(m\sum(x for x=1:m if m%x<1)for m=1:n)==n

3

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

( FryAmTheEggman ने 1 बाइट बचाई)

qh.Mcs*M{yPZZS

यहाँ कोशिश करो! या अधिक परीक्षण मामलों को देखें।

बस मेरा अनिवार्य पाइथ सबमिशन जो सबसे अधिक संभावना है कि गोल्फ है।

कैसे?

qh.Mcs * M {yPZZS ~ पूर्ण कार्यक्रम। प्र = इनपुट।

             S ~ रेंज में पूर्णांक [1, Q]।
  .M ~ अधिकतम फ़ंक्शन मान वाले तत्वों को प्राप्त करें।
    सीएस * एम {yPZZ ~ कुंजी फ़ंक्शन: एक चर जेड का उपयोग करता है।
         yPZ ~ Z के प्रमुख कारकों का अधिकार।
        {* डेडुप्लिकेटेड।
      * एम ~ प्रत्येक का उत्पाद।
     s ~ और सुमिरन किया।
    सी जेड ~ जेड द्वारा विभाजित।
 एच ~ पहला तत्व।
q ~ इनपुट के साथ समानता की जाँच करें। आउटपुट या तो सही है या गलत है।

3

05AB1E , 10 बाइट्स

LÑOā/ZQ¨_P

इसे ऑनलाइन आज़माएं! या टेस्ट सूट के रूप में

व्याख्या

L            # push range [1 ... input]
 Ñ           # divisors of each
  O          # sum of each
   ā/        # divide each by its 1-based index
     Z       # get max
      Q      # compare to each
       ¨     # remove the last element
        _    # logical negation
         P   # product

मुझे लगता है (हालांकि मुझे यकीन नहीं है) यह विफल रहता है 360360(अधिक विवरण के लिए चुनौती देखें: एक अत्यधिक अनुशंसित नकारात्मक परीक्षण मामला 360360 है, क्योंकि यह अंतिम सुपरबंडेंट संख्या के साथ संबंध रखता है। )।
श्री एक्सकोडर

@ Mr.Xcoder: सच है। इसे तय किया, लेकिन अब ऐसा करने का एक बेहतर तरीका हो सकता है।
एमिग्ना



2

गणितज्ञ, ५३ ५० बाइट्स

a=Tr@Divisors@#/#&;AllTrue[a@#-Array[a,#-1],#>0&]&

शुद्ध कार्य। एक पूर्णांक को इनपुट और रिटर्न Trueया Falseआउटपुट के रूप में लेता है ।


कुछ Tr@Divisors@#काम करना चाहेंगे ?
user202729

1

जाप v2.0a0, 12 16 बाइट्स

नींद से वंचित मस्तिष्क इस पर और सुधार नहीं कर सकता है!

रिटर्न 1truthy के लिए या 0falsey के लिए।

Æâ x÷U >Xâ x÷XÃ×

कोशिश करो

4 बाइट्स को संभालने के लिए बलिदान किया 360360


व्याख्या

  • पूर्णांक का निहित इनपुट U
  • Æ Ãनिम्न से फ़ंक्शन के माध्यम से पूर्णांकों की एक सरणी बनाता 0है U-1और प्रत्येक को पास करता है X
  • âके भाजक मिलते हैं U
  • ÷Uउनमें से प्रत्येक को विभाजित करता है U
  • x परिणाम बताते हैं।
  • के भाजक मिलते हैं X
  • ÷Xउनमें से प्रत्येक को विभाजित करता है X
  • x परिणाम बताते हैं।
  • > जाँच करता है कि पहला परिणाम दूसरे से अधिक है या नहीं।
  • × गुणन द्वारा बूलियन के परिणामस्वरूप सरणी को कम करता है।

1
यदि आपका वर्तमान दृष्टिकोण आपकी व्याख्या से मेल खाता है, तो यह 360360या ऐसे अन्य पूर्णांकों के लिए विफल होता है: एक अत्यधिक अनुशंसित नकारात्मक परीक्षण मामले (यदि आपका दुभाषिया इसे संभाल सकता है) 360360 है, क्योंकि यह अंतिम
सुपरबंडेंट

@ Mr.XCoder: पागल, तुम सही हो! जब मैं इसे ठीक करने के लिए एक पल मिलता है तो शायद यह मेरे लिए कुछ बाइट्स वाला होता है।
झबरा

@ Mr.Xcoder: अभी के लिए फिक्स्ड, मुझे यह देखने के लिए बाद में वापस आना होगा कि क्या मैं इस पर सुधार कर सकता हूं।
झबरा

0

एपीएल + विन, 37 बाइट्स

 ↑1=⍒⌽(+/¨((0=(⍳¨n)|¨n)×⍳¨n)~¨⊂0)÷n←⍳⎕

स्क्रीन इनपुट के लिए संकेत।


0

सी (जीसीसी), 99 बाइट्स

s(n,j,k){for(j=k=0;j++<n;)k+=n%j?0:j;n=k;}f(n,i,r){for(i=r=0;++i<n;)r=1.*s(n)/n<1.*s(i)/i?:r;r=!r;}

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

सी, 108 बाइट्स

float s(n,j,k){for(j=k=0;j++<n;)k+=n%j?0:j;return k;}f(n,i,r){for(i=r=0;++i<n;)s(n)/n<s(i)/i&&++r;return!r;}

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


तो, sफ्लोट को वापस करने की आवश्यकता क्यों है ?
निसा

@StephenLeppik तुलना s(n)/nकरने पर पूर्णांक विभाजन के बजाय फ्लोट डिवीजन का उपयोग करना s(i)/i
स्टेडीबॉक्स

0

स्विफ्ट , 120 118 बाइट्स

let s={n in Float((1...n).reduce(0){n%$1>0 ?$0:$0+$1})}
{n in(1..<n).reduce(0){max($0,s($1)/Float($1))}<s(n)/Float(n)}

स्विफ्ट में निहित प्रकार की घोषणाओं के कारण संकलन करने के लिए कुछ समय (टीआईओ पर लगभग 6 सेकंड) लेता है।

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



0

फंकी , 79 बाइट्स

d=n=>fors=i=0i<=n i++s+=i*!n%i
f=n=>{forc=1c<n c++if(d(n)/n)<=d(c)/c return0 1}

व्याख्या की

यह पहले फ़ंक्शन को परिभाषित करता dहै जो σफ़ंक्शन है, और यह का गोल्फ संस्करण है

function d(n){
    var s = 0;
    for(var i=0; i<n; i++){
        if(n%i == 0){
            s += i;
        }
    }
    return s;
}

हम i को 0 पर सेट कर सकते हैं, क्योंकि i*n%0हमेशा बराबर होगा 0*..., इस प्रकार0

इसका अगला भाग फ़ंक्शन को परिभाषित करता है f, जो कि सुपरबैंडंडस फ़ंक्शन है, और यह केवल गोल्फ का रूप है

function f(n){
    for(var c=1; c<n; c++){
        if( (d(n)/n) <= (d(c)/c) ){
            return 0;
        }
    }
    return 1;
}

और यह सिर्फ जांचता है, जैसा कि चुनौती युक्ति बताती है, कि 1 से n-1 तक के सभी पूर्णांकों d(n)/nमें इनपुट की तुलना में कम है।

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



0

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

εü<m§ṁ/Ḋṫ

इसे ऑनलाइन आज़माएं! 360360 टेस्ट केस के लिए बहुत धीमा।

व्याख्या

εü<m§ṁ/Ḋṫ  Implicit input, say n=6.
        ṫ  Decreasing range: [6,5,4,3,2,1]
   m       Map this function (example argument k=4):
       Ḋ    Divisors of k: [1,2,4]
    §ṁ      Map and sum
      /     division by k: 7/4
           Result: [2,6/5,7/4,4/3,3/2,1]
 ü         Remove duplicates by
  <        strict comparison. This greedily extracts a non-decreasing subsequence: [2]
ε          Is it a singleton list? Yes.

मुझे मिल गया £ü¤<§ṁ/ḊN
सुपरबंडेंट

0

पर्ल 5, 84 बाइट्स

say!grep$a[-1]<=$a[$_],0..(@a=map{$i=$_;my$j;map{$i%$_ or$j+=$_/$i}1..$i;$j}1..<>)-2

की आवश्यकता -E(मुक्त)

विनिर्देशन का एक सीधा कार्यान्वयन, गोल्फ


0

एपीएल (एनएआरएस), 61 चार्ट, 122 बाइट्स

r←f w;m;k
r←m←0
r+←1⋄k←r÷⍨11πr⋄→3×⍳r≥w⋄→2×⍳∼m<k⋄m←k⋄→2
r←k>m

11 कारकों का कार्य योग है

  (⍳9),¨ f¨1..9
1 1  2 1  3 0  4 1  5 0  6 1  7 0  8 0  9 0 
  f 360360
0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.