क्या यह हार्डी-रामानुजन-संख्या-ईश हर्षद संख्या है?


16

पृष्ठभूमि

1729 नंबर हार्डी-रामानुजन नंबर है। एस। रामानुजन (जिन्हें व्यापक रूप से महान भारतीय गणितज्ञ 1 माना जाता है) द्वारा इसकी एक अद्भुत संपत्ति की खोज की गई थी , जब जीएच हार्डी ने एक अस्पताल में उनसे मुलाकात की। हार्डी के अपने शब्दों में:

मुझे याद है एक बार जब वह पुटनी में बीमार थे तो उन्हें देखने के लिए जा रहे थे। मैंने टैक्सी कैब नंबर 1729 में सवारी की थी और टिप्पणी की थी कि यह संख्या मुझे नहीं बल्कि नीरस लग रही थी, और मुझे उम्मीद थी कि यह एक प्रतिकूल शगुन नहीं था। "नहीं," उन्होंने जवाब दिया, "यह एक बहुत ही दिलचस्प संख्या है; यह दो अलग-अलग तरीकों से दो क्यूब्स के योग के रूप में सबसे छोटी संख्या है।"

इसके अलावा, इसमें कई अन्य अद्भुत गुण हैं। ऐसी एक संपत्ति यह है कि यह एक हर्षद संख्या है, अर्थात इसके अंकों का योग (1 + 7 + 2 + 9 = 19) इसका एक कारक है। वह भी, एक विशेष। जैसा कि मासाहिको फुजिवारा ने दिखाया, 1729 एक सकारात्मक पूर्णांक है, जब इसके अंकों को एक साथ जोड़ दिया जाता है, तो एक राशि उत्पन्न होती है, जब इसके उलट होने पर गुणा करने पर मूल संख्या मिलती है:

1 + 7 + 2 + 9 = 19

19 × 91 = 1729

इस तरह की संपत्ति वाले एक सकारात्मक पूर्णांक को मैं इस पद के उद्देश्य से हार्डी-रामानुजन- ईश हर्षद नंबर के रूप में परिभाषित करता हूं । (इसके लिए एक तकनीकी शब्द हो सकता है, लेकिन मैं इसे नहीं पा सकता था, जब तक कि यह A110921 का सदस्य न हो )


काम

nइनपुट के रूप में एक सकारात्मक पूर्णांक को देखते हुए , nएक हार्डी-रामानुजन- ish हर्षद संख्या के आधार पर एक सत्य या गलत मूल्य का उत्पादन करता है । आउटपुट सत्य, अगर यह है। अन्यथा, उत्पादन गलत है।

ध्यान दें कि केवल चार हार्डी-Ramanujan- ish हर्षद नंबर मौजूद हैं ( 1, 81, 1458और 1729), और आप कोड लिख सकते हैं जो उन लोगों के साथ तुल्यता के लिए जाँच करता है। लेकिन मुझे नहीं लगता कि यह मजेदार होगा।


इनपुट

आपके कार्यक्रम को एक सकारात्मक पूर्णांक (एक प्राकृतिक संख्या, दूसरे शब्दों में) लेना चाहिए। इसे किसी चर में मौजूद मानने के अलावा इसे किसी भी तरह से लिया जा सकता है। मोडल विंडो, इनपुट बॉक्स, कमांड लाइन, फ़ाइल आदि से पढ़ना अनुमत है। इनपुट को फ़ंक्शन तर्क के रूप में भी अनुमति दी जाती है।


उत्पादन

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


अतिरिक्त नियम

  • आप चाहिए का उपयोग नहीं निर्मित एक कार्य को पूरा करने के लिए (मुझे आश्चर्य है कि किसी भी भाषा होगा ऐसे में निर्मित है, लेकिन फिर मेथेमेटिका ... )

  • स्टैंडर्ड लोफॉल्स लागू होते हैं।


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

Input        Output
1            Truthy (because 1 × 1 (reverse of 1) = 1)
2            Falsey
3            Falsey
4            Falsey
5            Falsey
81           Truthy (because 9 (8 + 1) × 9 (reverse of 9) = 81)
1458         Truthy (because 18 (1 + 4 + 5 + 8) × 81 (reverse of 18) = 1458)
1729         Truthy (because 19 (1 + 7 + 2 + 9) × 91 (reverse of 19) = 1729)
1730         Falsey
2017         Falsey

जीत का मानदंड

यह , इसलिए बाइट्स में सबसे छोटा कोड जीतता है!


1 हर साल, पर 22 nd दिसंबर, श्रीनिवास रामानुजन के जन्मदिन, राष्ट्रीय गणित दिवस भारत में मनाया जाता है। उनके सहयोगियों, कैम्ब्रिज में उनकी तुलना जैकोबी, यूलर और यहां तक ​​कि न्यूटन से भी की गई। इतना महान होने के अलावा, उनके पास शुद्ध गणित में लगभग कोई औपचारिक प्रशिक्षण नहीं था , लेकिन फिर भी, उन्होंने गणितीय विश्लेषण , संख्या सिद्धांत , अनंत श्रृंखला और निरंतर अंशों में महत्वपूर्ण योगदान दिया । दुर्भाग्य से, उनके दिमाग में हजारों गणितीय खोजों के साथ 32 साल की उम्र में उनकी मृत्यु हो गई। उनके ऊपर एक फिल्म भी बनाई गई थी, जो उनकी जीवनी पर आधारित थी ,द मैन हू नोव इन्फिनिटी


4
"लेकिन आपको कोड नहीं लिखना चाहिए जो उनके साथ समानता की जांच करता है।" यह एक गैर-अवलोकन कार्यक्रम की आवश्यकता है
मार्टिन एंडर

@MartinEnder लेकिन तब यह संख्या 1729, 1458, 81 या 1 के बराबर होगी । मुझे नहीं लगता है कि कोई मज़ा आएगा।
अर्जुन

2
क्यों घटता है?
अर्जुन

प्रमाण: n अंको के साथ एक संख्या का अधिकतम डिजिटल योग 9n है। 9n का उल्टा सबसे अधिक 90n होगा। तो, उत्पाद अधिकतम 810n ^ 2 पर होगा, जिसमें n अंक होना चाहिए, इसलिए यह कम से कम 10 ^ (n-1) होना चाहिए। जब n = 7, यह बहुत अधिक हो गया है, तो किसी को केवल 999999 तक जांचना होगा।
लीक नून

6
मुझे लगता है कि आपको उनके साथ समानता की जाँच करने की अनुमति देनी चाहिए। इस तरह के जवाबों को वैसे भी डाउनवोट किया जाएगा, और शायद कुछ मामलों में लंबा होगा।
ओकेक्स

जवाबों:


12

नीम , 5 बाइट्स

𝐬D𝐫𝕋𝔼

स्पष्टीकरण:

Example input: 1729
𝐬      Implicitly convert to digit list and 𝐬um the digits [19]
 D     Duplicate [19, 19]
  𝐫    𝐫everse [19, 91]
   𝕋   mul𝕋iply [1729]
    𝔼  check for 𝔼quality with input [1]
Implicit output: 1

कोशिश करो!


क्या अन्य 4 बाइट्स अप्राप्य हैं? मैं 1 बाइट गिनता हूं
GamrCorps

1
@GamrCorps ऐसा लगता है कि वे आपके ब्राउज़र द्वारा समर्थित नहीं हैं। यहाँ एक छवि है: puu.sh/wpETt/9f92af18e0.png
Okx

1
अच्छा है, लेकिन क्या कूटबन्धन में 5 बाइट्स? यहां 5 वर्णों का :-), 𝐬 (U + 1D42C MATHEMATICAL BOLD SMALL S) , 1 (U + 1D42B MATHEMATICAL BOLD SMALL R) , 𝕋 (U + 1DDB MATHEMATICAL DOUBLE-STRUCK CAPITAL T) और here (U + 1DDCB) डबल-स्ट्रॉन्क कैपिटल E) प्रत्येक में UTF-8 (UTF-16 में और) (जाहिर है) UTF-32 में 4 बाइट्स लेते हैं। तो यह वास्तव में 17 बाइट्स है, हालांकि मुझे लगता है कि एक ASCII + उन पात्रों के लिए अनुकूलित कस्टम एन्कोडिंग को परिभाषित कर सकता है।
श्रीवत्सआर

3
@ श्रीवत्सआर नीम अपने स्वयं के कोड पृष्ठ
The_Lone_Devil

@ The_Lone_Devil आह कि यह समझा जाएगा, धन्यवाद!
श्रीवत्सआर

15

अर्नोल्ड, 888 बाइट्स

IT'S SHOWTIME
HEY CHRISTMAS TREE i
YOU SET US UP 0
GET YOUR ASS TO MARS i
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
HEY CHRISTMAS TREE a
YOU SET US UP 0
GET TO THE CHOPPER a
HERE IS MY INVITATION 1
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE b
YOU SET US UP 0
GET TO THE CHOPPER b
HERE IS MY INVITATION 81
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE c
YOU SET US UP 0
GET TO THE CHOPPER c
HERE IS MY INVITATION 1458
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE d
YOU SET US UP 0
GET TO THE CHOPPER d
HERE IS MY INVITATION 1729
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE res
YOU SET US UP 0
GET TO THE CHOPPER res
HERE IS MY INVITATION a
CONSIDER THAT A DIVORCE b
CONSIDER THAT A DIVORCE c
CONSIDER THAT A DIVORCE d
ENOUGH TALK
TALK TO THE HAND res
YOU HAVE BEEN TERMINATED

मुझे पता है, मैं सिर्फ समानता के लिए जांच करता हूं, लेकिन यह कार्यक्रम का मजेदार हिस्सा नहीं होना चाहिए।

इसे पढ़ने का आनंद लें। :)

आसान पठनीयता के लिए वहां कुछ नए समाचार जोड़े गए:

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


6
मैं तुम्हें पसंद करता हूं। इसलिए मैं तुम्हें आखिरी मारने जा रहा हूं।
डेविड कॉनरेड

12

x86 असेंबली, 55 35 33 31 बाइट्स:

एक ABI मान लेता है जहां EAX में रिटर्न वैल्यू है और स्टैक पर पैरामीटर पुश किए गए हैं ... तो लगभग सभी।

00000000: 8B 44 24 04        mov         eax,dword ptr [esp+4]
00000004: 48                 dec         eax
00000005: 74 16              je          0000001D
00000007: 83 E8 50           sub         eax,50h
0000000A: 74 11              je          0000001D
0000000C: 2D 61 05 00 00     sub         eax,561h
00000011: 74 0A              je          0000001D
00000013: 2D 0F 01 00 00     sub         eax,10Fh
00000018: 74 03              je          0000001D
0000001A: 33 C0              xor         eax,eax
0000001C: C3                 ret
0000001D: 40                 inc         eax
0000001E: C3                 ret



4

जावास्क्रिप्ट ईएस 6, 59 57 बाइट्स

x=>(q=eval([...x].join`+`)+'')*[...q].reverse().join``==x

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

मूल रूप से अंक सरणी में विभाजित होता है, और +मूल रूप से अंकों को योग करने के लिए उस अभिव्यक्ति के साथ जुड़ जाता है । string*stringस्वचालित रूप से स्ट्रिंग में प्रवेश करेगा। एक स्ट्रिंग के रूप में इनपुट लेता है



2

रूबी, 69 बाइट्स

इनपुट के रूप में पूर्णांक के साथ पहले प्रयास करें:

->i{(x=i.to_s.split'').inject(0){|s,a|s+a.to_i}*(x[-1]+x[0]).to_i==i}

दूसरा प्रयास, इनपुट के रूप में स्ट्रिंग के साथ:

->i{(x=i.split('').map &:to_i).inject(0,&:+)*(x[-1]*10+x[0])==i.to_i}

.split('')बनाया जा सकता है.chars
कॉनर ओ'ब्रायन

2

बैच, 164 बाइट्स

@set/an=%1,s=0
:s
@set/as+=n%%10,n/=10
@if %n% gtr 0 goto s
@set/an=s,r=0
:r
@set/ar=r*10+n%%10,n/=10
@if %n% gtr 0 goto r
@set/an=%1-r*s
@if %n%==0 echo 1

सफलता पर प्रिंट 1, असफलता पर कोई आउटपुट नहीं।


2

जावास्क्रिप्ट (ईएस 6), 72 बाइट्स

यह ईएस 6 जमा करने के लिए वैध है। f=शुरू में जोड़ें और जैसे आह्वान करें f(arg)

n=>(y=[...`${n}`].reduce((c,p)=>+c+ +p))*[...`${y}`].reverse().join``==n

टेस्ट स्निपेट:

let f =

n=>(y=[...`${n}`].reduce((c,p)=>+c+ +p))*[...`${y}`].reverse().join``==n

console.log(1 + " -> " + f(1))
console.log(81 + " -> " + f(81))
console.log(1458 + " -> " + f(1458))
console.log(1729 + " -> " + f(1729))
console.log((randomNum = Math.floor(Math.random() * 10000) + 1) + " -> " + f(randomNum))


जैसा कि मैंने हाल ही में सीखा है, तुरंत अपनी ही चुनौती का जवाब देना है।
झबरा

@ शगुन लेकिन मान्य।
17

3
और मैं आमतौर पर उन लोगों को नीचा दिखाता हूं जो समुदाय की परवाह नहीं करते हैं।
लीक से हटकर

1
@ ओकेक्स, उन लोगों के अनुसार नहीं जिन्होंने ऐसा करने के लिए तुरंत मुझे नीचे उतारा और बेले गए। हमें इस अभ्यास की अनुमति है या नहीं, इसके अनुरूप होना चाहिए।
झबरा

3
मुझे लगता है कि यह चुनौती पोस्टर को एक अनुचित समय लाभ देता है क्योंकि यह संभव है कि वे एक चुनौती बना सकते हैं, इसे हल कर सकते हैं और फिर इसे पोस्ट कर सकते हैं।
बिलकुल अमानवीय

2

कोटलिन, 111 108 बाइट्स

fun main(a:Array<String>)=print(a[0].sumBy{c->"$c".toInt()}.run{"${this*"$this".reversed().toInt()}"}==a[0])

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

जैसा कि सांख्यिकीय रूप से संकलित JVM समाधानों के लिए विशिष्ट है, बहुत सारे बाइट्स केवल मुख्य फ़ंक्शन घोषणा और कॉलिंग प्रिंट () पर खो जाते हैं। फ़ंक्शन का मांस 60ish बाइट्स है, जो कि कोटलिन जैसी सामान्य रूप से टाइप की गई भाषा के लिए बिल्कुल भी बुरा नहीं है।

कोटलिन, बोरिंग समाधान, 69 बाइट्स

fun main(a:Array<String>)=print(a[0].toInt()in setOf(1,81,1458,1729))

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


1

निस्संदेह, द्विभाजित। DSODR*Qजो मुझे देखने से पहले था।
मैजिक ऑक्टोपस Urn

@carusocomputing यकीन नहीं है कि आपको पहले की आवश्यकता क्यों होगी D
आउटगोल्फ

1

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

def f(n):x=sum(map(int,`n`));return x*int(`x`[::-1])==n

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

व्याख्या

def f(n):                           # define a function f that takes an argument n
    x = sum(                        # assign to x the sum of...
            map(int, `n`))          # ...the integer conversion of all elements in stringified n
    return x * int(                 # return True if x times the integer conversion of...
                   `x`[::-1])       # ...the stringified x reversed...
                              == n  # ...equals n

एक eval()समाधान थोड़ा 2 बाइट्स लंबा है ...

def f(n):x=eval('+'.join(`n`));return x*int(`x`[::-1])==n

वैकल्पिक (अमान्य?) समाधान, 42 29 बाइट्स

यह समाधान सभी संख्याओं के खिलाफ समानता के लिए जाँच करता है।

lambda n:n in[1,81,1458,1729]

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


वैकल्पिक वैकल्पिक समाधान, समान लंबाई:[1,81,1458,1729].__contains__
संगीतकार 523


1

न्यूस्टैक , 16 बाइट्स

ḟᵢ¹f YΣ©Eᴙx| ∏=f

विभाजन:

उदाहरण के रूप में 1729 का उपयोग करना

ḟᵢ                 Define new function equal to input.               []
  ¹                Add 1 to stack.                                   [1]
   f               Multiply stack by the function.                   [1729]
     Y             Split the stack into digits.                      [1,7,2,9]
      Σ            Sum the stack.                                    [19]
       ©           Duplicate stack.                                  [19,19]
        E  |       Define new value for the first element            [19,19]
         ᴙx        Reverse first element.                            [91,19]
             ∏     Take the product.                                 [1729]
              =f   Remove from stack if not equal to the function.   [1729]

गलत होने पर कुछ भी प्रिंट नहीं करता है, और अगर सही है तो मूल इनपुट।


फ़ंक्शन द्वारा स्टैक को गुणा करें । मुझे वह नहीं मिला। क्या इसका मतलब है कि इनपुट?
अर्जुन

हाँ और नहीं, के बाद ¹, ढेर के होते हैं [1]। और जब से हमने परिभाषित किया है fया f(x)आपके इनपुट के बराबर है, फ़ंक्शन द्वारा स्टैक में प्रत्येक तत्व को गुणा fकरना अनिवार्य रूप 1से हमारे इनपुट के साथ बदल रहा है । (क्योंकि [1] * f(x)= [f])
Graviton

1

MATL , 11 बाइट्स

tV!UstVPU*=

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

t - इनपुट लें और उसे डुप्लिकेट करें

V!U - इसे अलग-अलग अंकों में विभाजित करें

s - उन अंकों का योग

t - उस राशि का डुप्लिकेट

VP - इसे एक स्ट्रिंग में बदल दें, इसे दाएं से बाएं फ्लिप करें

U - उस नंबर को वापस चालू करें

* - पिछले दो मानों को गुणा करें (अंक-योग और इसके बाएं से दाएं फ़्लिप संस्करण)

= - जांचें कि क्या यह मूल इनपुट के बराबर है (जो स्टैक में केवल अन्य मूल्य है)








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