क्या मैं एक सेकेंडरी टैक्सीसेब हूं?


13

पृष्ठभूमि

रामानुजन की संख्या, 1729, हार्डी के (संभवतः एपोक्रीफाल) की वजह से एक टैक्सी-कैब नंबर कहलाती है , इस नंबर वाले अस्पताल में रामानुजन से मिलने के लिए कैब में सवार हो जाती है, जो उन्हें बहुत बुरा लगता था।

यह तब से पूर्णांक के एक वर्ग के रूप में जाना जाता है, जिसे "टैक्सीसेक नंबर" के रूप में जाना जाता है, जो दो (या कभी-कभी 'के') अलग-अलग तरीकों से दो nth शक्तियाँ (सकारात्मक पूर्णांकों की राशि) के योग के रूप में व्यक्त होती हैं।

1729 2 अलग-अलग तरीकों से 2 क्यूब्स के योग के रूप में सबसे छोटी प्राकृतिक संख्या है, जो इसे पहला "3,2" टैक्सिकैब नंबर ("एन, के" सामान्य किया जा रहा है) बनाता है।

चुनौती

एक संख्या को देखते हुए, यह तय करें कि क्या यह "3,2" 'सेकेंडरी टैक्सिकैब नंबर' है - जिसका अर्थ है कि यह 1729 (क्यूब्स के 2 अद्वितीय योग) के रूप में एक ही बाधा को पूरा करता है, लेकिन "3" का सबसे छोटा ऐसा पूर्णांक नहीं होना चाहिए , 2 "वर्ग (जो 1729 का है, निश्चित रूप से)।

उदाहरण के मामले:

1729 = 10 ^ 3 + 9 ^ 3 = 12 ^ 3 + 1 ^ 3

4104 = 15 ^ 3 + 9 ^ 3 = 16 ^ 3 + 2 ^ 3

13832 = 2 ^ 3 + 24 ^ 3 = 18 ^ 3 + 20 ^ 3

साथ ही 20683, 32832, 39312 ...

स्कोरिंग

यह , इसलिए प्रत्येक भाषा में सबसे कम उत्तर जीतता है।

क्रूर बल द्वारा अन्य मामलों को खोजने के लिए रफ मतलाब कोड:

for k = 1729:20000
    C = sum(round(mod(real((k-[1:ceil(k^(1/3))].^3).^(1/3)),1)*10000)/10000==1);
    if C > 1
        D = (mod(C,2)==0)*C/2 + (mod(C,2)==1)*((C+1)/2);
        disp([num2str(k),' has ',num2str(D),' solns'])
    end
end

PPCG में आपका स्वागत है! मैंने आपके प्रश्न को थोड़ा और स्पष्ट करने के लिए संपादित किया। क्या आप कुछ परीक्षण मामलों को जोड़ने के लिए तैयार होंगे?
संगीतज्ञ ५२३

हां, मैं संघर्ष कर रहा था क्योंकि मैं काम पर हूं और मतलबी नहीं हूं, लेकिन ऑक्टेव को काम करने के लिए ऑनलाइन लाने में कामयाब रहा और 4104 = 16 ^ 3 + 4 ^ 3 = 15 ^ 3 + 9 ^ 3
DrQuarius


1
क्या नंबर लिखने के लिए ठीक दो तरीके होने चाहिए, या कम से कम दो होने चाहिए?
जॉन ड्वोरक

2
किसी को टैक्सी में एक उत्तर लिखना चाहिए bigzaphod.github.io/Taxi
SaggingRufus

जवाबों:


4

05AB1E , 9 बाइट्स

कोड (बहुत धीमा)

L3mãOQO3›


कोड (बहुत तेज), 12 बाइट्स

tL3mDδ+˜QO3›

05AB1E एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!

व्याख्या

t                # Square root (not necessary but added for speed)
 L               # Create a list [1 .. sqrt(input)]
  3m             # Raise to the power of 3
    D            # Duplicate
     δ+          # 2 dimensional addition
       ˜         # Deep-flatten the entire list
        Q        # Check which are equal to the input
         O       # Sum up to get the number of equalities
          3›     # Checks whether there are 4 or more equalities. In order for a number
                   to be a secondary taxicab number, there are at least two distinct
                   ways to get to that number and 4 ways when you also take reversed
                   arguments in account.

2
निश्चित रूप से आप वर्गमूल को हटाकर एक बाइट बचा सकते हैं। यह कोड-गोल्फ है, सबसे तेज-कोड नहीं।
बिखराव

@ क्रिसियन I ने कोड का एक धीमा संस्करण जोड़ा है।
अदनान

6

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

श्रेय एर्ग आउटफोलफर को।

Œċ*3S€ċ>1

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

यह बहुत धीमा है कि यह 1729ऑनलाइन के लिए भी काम नहीं करेगा ।

बहुत तेजी से, 12 बाइट्स

डेनिस को श्रेय।

R*3fRŒċS€ċ>1

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


मैंने सिर्फ "4104" के साथ यह परीक्षण किया और यह पारित हो गया। :) यह अभी तक किसी भी परे नहीं मिला है, लेकिन यह तेजी से बिजली थी!
ड्रैकुइर

Ðf⁸बन सकता है fR। दूसरा हटाया जा सकता है।
डेनिस

दूसरा be वास्तव में हटाया जा सकता है, लेकिन एफआर स्वैप विफलता की ओर जाता है।
ड्रैकुइर

वैसे, यह कोड-गोल्फ है इसलिए हम गति के बारे में परवाह नहीं करते हैं;) लेकिन आप अभी भी TIO लिंक में तेज संस्करण शामिल कर सकते हैं।
user41805

1
आपको गति की परवाह करने की जरूरत नहीं है, बस करें Œċ*3S€ċ>1
आउटगोल्फर

5

गणितज्ञ, 35 बाइट्स

Count[#^3+#2^3&~Array~{#,#},#,2]>2&

शुद्ध कार्य एक धनात्मक पूर्णांक ले रहा है और लौट रहा है Trueया False

#^3+#2^3&~Array~{#,#}1 और इनपुट के बीच दो पूर्णांकों के क्यूब्स के सभी योगों को सारणीबद्ध करता है। (यह इनपुट के क्यूब रूट की तरह, क्यूबर्स पर क्यूबिक होने के लिए एक समझदार बाध्यता के साथ बहुत तेज़ होगा; लेकिन वह कीमती बाइट ले जाएगा। जैसा कि यह है, कोड इनपुट पर लगभग 30 सेकंड लेता है 13832और कम से कम चतुष्कोणीय रूप से मापता है। इनपुट में।) Count[...,#,2]इस सूची में घोंसला-स्तर 2 पर इनपुट कितनी बार दिखाई देता है; यदि यह संख्या इससे अधिक है 2, तो इनपुट एक अर्ध-टेक्सीकैब संख्या है (2 से अधिक है, 1 से अधिक है, क्योंकि ^ 3 + b ^ 3 और b ^ 3 + a ^ 3 अलग से गिने जा रहे हैं)।


3

गणितज्ञ, ३ by ३ 38 बाइट्स

Tr[1^PowersRepresentations[#,2,3]]>1&

-1 बाइट @GregMartin को धन्यवाद

हमेशा की तरह, हर चीज़ के लिए एक मैथेमेटिका बिल्टइन है।


1
यह मानते हुए कि अधिक-से-2-अभ्यावेदन के साथ ओपी ठीक है, तो मेरा मानना ​​है कि Tr[1^...]इसके स्थान पर काम करता है Length@
ग्रेग मार्टिन

2

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

एक अपेक्षाकृत तेजी से पुनरावर्ती कार्य जो अंततः एक बूलियन देता है।

f=(n,k,r=0,x=n-k**3)=>x<0?r>3:f(n,-~k,r+=(x**(1/3)+.5|0)**3==x)

डेमो


2

मैथेमेटिका, 48 बाइट्स

Length@Solve[x^3+y^3-#==0<x<y,{x,y},Integers]>1&

इनपुट

[4104]

उत्पादन

सच


ध्यान दें कि #!=1729&&अब आवश्यक नहीं है कि कल्पना को स्पष्ट किया गया है।
ग्रेग मार्टिन

क्या आप Solveइसके बजाय उपयोग कर सकते हैं Reduce?
इयान मिलर

बेशक ... 1 बाइट 1 बाइट है!
J42161217

एक और बाइट को बचा सकते हैं Length@Solve[x^3+y^3-#==0<x<y,{x,y},Integers]>1&जिसके &&साथ -और थोड़ी सी फेर-बदल होती है।
इयान मिलर


1

MATL ( 16 15 बाइट्स) ( 13 12 आदर्श रूप से)

.4^:3^2XN!sG=sq

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

स्पष्टीकरण:

'लीक नून' के जेली समाधान के आधार पर, केवल MATL में परिवर्तित किया गया, शायद कुछ हिस्सों में निरर्थक और इसे बेहतर बनाया जा सकता है:

.4^  % rough cube root of input, as maximum potential integer N.
:3^   % create array of all cubes from 1^3 up to N^3.
2XN   % do nchoosek on cube array, creating all possible pairs (k=2) to add.
!s    % transpose array and add all pairs to find sums.
G=    % find all pairs that equal the original input.
sq   % if there is more than one solution, then pass the test.

नोट: मिथ्या आउटपुट में 0 और -1 शामिल हैं, जबकि सत्य आउटपुट 1 है। लुइस मेंडो के लिए "एस 1>" "वर्ग" के स्थान पर एक अतिरिक्त बाइट को बचाने के लिए धन्यवाद।

आदर्श रूप से ( 13 12 बाइट्स):

:3^2XN!sG=sq

... पर्याप्त है, लेकिन बड़ी संख्या के लिए यह tio.run के पृष्ठ पर क्रैश हो जाता है।


मूल: MATL (19 बाइट्स) =============== XH.34 ^: 3 ^ 2XN! SH = s1>
डॉर्करी

1
किसी भी truthy उत्पादन मान्य है, तो आप की जगह ले सकता 1>से q। इसके अलावा, आपके पास स्पष्टीकरण के Hबजाय G। तथ्य यह है कि कार्यक्रम बड़ी संख्या में दुर्घटनाग्रस्त हो जाता है, आमतौर पर स्कोरिंग के लिए अप्रासंगिक होता है। यदि यह पर्याप्त समय और स्मृति प्रदान करता है जो स्वीकार्य है, जब तक कि चुनौती अन्यथा निर्दिष्ट न हो
लुइस मेंडो

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

0

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

->n{r=*1..n;r.product(r).count{|i,j|i**3+j**3==n}>1}

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

चूंकि यह संस्करण बड़े पैमाने पर एन 2 आकार का सरणी बनाता है , इसलिए यह सभी सच्चे टेस्टकेस से अधिक पर विफल रहता है 1729, यहां एक संशोधित संस्करण है जिसमें लगभग 2/3 का छोटा सरणी आकार है , जो सफलतापूर्वक 31392 तक कम से कम जांच करता है।

इसे ऑनलाइन आज़माएं! (संशोधित)


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