पेड़ों में समानता आती है


11

से लिया गया: OEIS- A071816

आपका कार्य, ऊपरी सीमा को देखते हुए n, समीकरण को संतुष्ट करने वाले समाधानों की संख्या ज्ञात करना है:

a+b+c = x+y+z, where 0 <= a,b,c,x,y,z < n

अनुक्रम OEIS पृष्ठ पर वर्णित है, और नीचे के रूप में शुरू होता है (1-अनुक्रमित):

1, 20, 141, 580, 1751, 4332, 9331, 18152, 32661, 55252, 88913, 137292, 204763, 296492, 418503, 577744, 782153, 1040724, 1363573, 1762004, 2248575, 2837164, 3543035, 4382904, 5375005, 6539156, 7896825, 9471196, 11287235, 13371756

इसके लिए n = 1, केवल एक ही उपाय है:(0,0,0,0,0,0)

इसके लिए n = 2, 20 ऑर्डर किए गए समाधान (a,b,c,x,y,z)हैं a+b+c = x+y+z:

(0,0,0,0,0,0), (0,0,1,0,0,1), (0,0,1,0,1,0), (0,0,1,1,0,0), (0,1,0,0,0,1), 
(0,1,0,0,1,0), (0,1,0,1,0,0), (0,1,1,0,1,1), (0,1,1,1,0,1), (0,1,1,1,1,0), 
(1,0,0,0,0,1), (1,0,0,0,1,0), (1,0,0,1,0,0), (1,0,1,0,1,1), (1,0,1,1,0,1), 
(1,0,1,1,1,0), (1,1,0,0,1,1), (1,1,0,1,0,1), (1,1,0,1,1,0), (1,1,1,1,1,1).

मैं और ओ

  • इनपुट एकल पूर्णांक denoting है n
  • आउटपुट एक पूर्णांक / स्ट्रिंग डिनोटिंग है f(n), जहां f(...)ऊपर फ़ंक्शन है।
  • अनुक्रमण ठीक उसी प्रकार वर्णित है, जैसे कोई अन्य अनुक्रमण स्वीकार्य नहीं है।

यह , सबसे कम बाइट-काउंट जीतता है।


आह crappp, मैं OEIS पर प्रत्यक्ष सूत्र नोटिस नहीं किया था, मुझे लगा कि यह नहीं होगा कि आसान। ओह ठीक है, मैं उस समीकरण के प्रत्यक्ष पोर्ट नहीं + 1 रहा हूँ; पी।
मैजिक ऑक्टोपस Urn

1
कम से कम सूत्र पूरी तरह से गोल्फ नहीं था: पी
f --nɪt Aprk

फिर, यह एसो-लैंग्स के खिलाफ एक मौका देता है।
मैजिक ऑक्टोपस Urn

क्या शीर्षक "समानता ट्रिपल में आता है" बेहतर होगा?
लीक नन

जवाबों:


11

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

ṗ6ḅ-ċ0

ओ (एन 6 ) समाधान।

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

यह काम किस प्रकार करता है

ṗ6ḅ-ċ0  Main link. Argument: n

ṗ6      Cartesian power 6; build all 6-tuples (a, x, b, y, c, z) of integers in
        [1, ..., n]. The challenge spec mentions [0, ..., n-1], but since there
        are three summands on each side, this doesn't matter.
  ḅ-    Unbase -1; convert each tuple from base -1 to integer, mapping (a, ..., z)
        to a(-1)**5 + x(-1)**4 + b(-1)**3 + y(-1)**2 + c(-1)**1 + z(-1)**0, i.e.,
        to -a + x - b + y - c + z = (x + y + z) - (a + b + c). This yields 0 if and
        only if the 6-tuple is a match.
    ċ0  Count the number of zeroes.

हा! गॉट को सैद्धांतिक उत्तर पसंद हैं (सैद्धांतिक उत्तर के लिए मेरा आधार अब यह n के बड़े मूल्यों के लिए TIO पर चलता है , यह संभवतः बुरा है)। मैं एक O(n^6)हालांकि देखने की उम्मीद कर रहा था : पी।
मैजिक ऑक्टोपस Urn

9

गणितज्ञ 17 या 76 बाइट्स

सूत्र का उपयोग करना:

.55#^5+#^3/4+#/5&

(@GregMartin और @ngenisis प्रति 3 बाइट्स सहेजे गए)

सूत्र का उपयोग करने के बजाय, यहां मैं सचमुच सभी समाधानों की गणना करता हूं और उन्हें गिनता हूं।

Length@Solve[a+b+c==x+y+z&&And@@Table[(0<=i<#),{i,{a,b,c,x,y,z}}],Integers]&

2
गैर-जानवर-बल तरीके से पोस्ट करने के लिए धन्यवाद :)। किसी भी गणितीय समीकरण के लिए +1 जो एक समीकरण या एक अंतर्निहित नहीं है।
मैजिक ऑक्टोपस Urn

के अनुसार इस जवाब , आप बदल सकते हैं 11/20द्वारा .55एक दो बाइट बचत के लिए।
ग्रेग मार्टिन

आपको पहले कार्यकाल में तारांकन की भी आवश्यकता नहीं है।
ngenisis

8

हास्केल , 48 बाइट्स

मैंने इसे लिखने से पहले सूत्र पर ध्यान नहीं दिया, इसलिए यह निश्चित रूप से सबसे छोटा (या सबसे तेज़) सामान्य तरीका नहीं है, लेकिन मुझे लगा कि यह बहुत अच्छा था।

f n=sum[1|0<-foldr1(-)<$>pure[1..n]`mapM`[1..6]]

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

f nसे 6 तत्वों की सभी सूचियाँ उत्पन्न करता है [1..n], फिर जिनकी गिनती होती है 0. जिसका उपयोग होता है, इस तथ्य का उपयोग करता a+b+c==d+e+fहै a-(d-(b-(e-(c-f))))==0, और यह भी कि अगर हम सभी संख्याओं में 1 जोड़ते हैं तो इससे कोई फर्क नहीं पड़ता।


मैंने देखा है कि, अक्सर, सबसे छोटा उत्तर सबसे कम प्रभावशाली होता है;)। यह गुना का एक बहुत अच्छा उपयोग है जिसे मैंने इस उत्तर को देखने से पहले नहीं सोचा होगा।
मैजिक ऑक्टोपस Urn

6

MATL , 12 बाइट्स

l6:"G:gY+]X>

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

व्याख्या

मैं फिर से कनवल्शन इस्तेमाल करने का मौका नहीं छोड़ सका!

यह OEIS से निम्नलिखित लक्षण वर्णन का उपयोग करता है:

a(n) = largest coefficient of (1+...+x^(n-1))^6

और निश्चित रूप से बहुपद गुणन दोष है।

l        % Push 1
6:"      % Do the following 6 times
  G:g    %   Push a vector of n ones, where n is the input
  Y+     %   Convolution
]        % End
X>       % Maximum

5

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

ṗ3S€ĠL€²S

@ डेनिस के रूप में छोटा नहीं है, लेकिन यह इनपुट के लिए 20 सेकंड से कम समय में खत्म होता है 100

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

यह काम किस प्रकार करता है

ṗ3S€ĠL€²S  Main link. Argument: n

ṗ3         Cartesian power; yield all subsets of [1, ..., n] of length 3.
  S€       Sum each. 
    Ġ      Group indices by their values; for each unique sum S, list all indices whose
           values are equal to S.
     L€    Length each; for each unique sum S, yield the number of items in the original
           array that sum to S.
       ²   Square each; for each unique sum S, yield the number of pairs that both sum to S.
        S  Sum; yield the total number of equal pairs.

क्या आप इस विधि की व्याख्या कर सकते हैं? मैं वर्तमान में जेली सीखने की प्रक्रिया में हूं, लेकिन मैं अभी भी पर्याप्त नहीं हूं कि मैं वास्तविक उत्तर प्रस्तुत करूं; मैं हमेशा अच्छे उदाहरणों के लिए आपको, डेनिस और कुछ अन्य को देखता हूं।
मैजिक ऑक्टोपस Urn

@carusocomputing ने स्पष्टीकरण समाप्त कर दिया। मुझे बताएं कि क्या आपके पास अभी भी कोई प्रश्न है :-)
ETHproductions

बहुत बढ़िया, मैं ब्रूट-फोर्स कार्यान्वयन के सबसे मूल से जवाबों के अनुकूलन पर भ्रमित हूं, जो मैं उन छोटे शॉर्ट कोड के लिए करूंगा जो मैं आपको पोस्ट कर रहा हूं; लेकिन मुझे लगता है कि हर स्पष्टीकरण एक कदम करीब है धन्यवाद!
मैजिक ऑक्टोपस Urn

5

पायथ, 13 12 बाइट्स

JsM^UQ3s/LJJ

लीक नन के लिए एक बाइट धन्यवाद।

व्याख्या

JsM^UQ3s/LJJ
   ^UQ3         Get all triples in the range.
JsM             Save the sums as J.
        /LJJ    Count occurrences of each element of J in J.
       s        Take the sum.

प्रत्यक्ष सूत्र का उपयोग नहीं करने के लिए +1: पी।
मैजिक ऑक्टोपस Urn

आप ऑनलाइन दुभाषिया के लिए एक लिंक पोस्ट करना पसंद कर सकते हैं ।
लीके नन

इसके अलावा, आप के /LJJबजाय उपयोग कर सकते हैं m/JdJ
लीके नन


2

TI-BASIC, 19 बाइट्स

:Prompt X
:.05X(11X^4+5X²+4

OEIS सूत्र का मूल्यांकन करता है।


1
आप यहां बाइट्स कैसे गिन रहे हैं? Prompt x= 2 बाइट्स?
मैजिक ऑक्टोपस Urn


1
Kinda दुखी है कि मैंने इससे पहले 5 बार TI-BASIC जवाब पोस्ट किया है और कभी भी इसे सही ढंग से नहीं बनाया है कि मैं अपनी उम्र_ के माध्यम से देखता हूं।
मैजिक ऑक्टोपस Urn

2

ओएसिस , 17 बाइट्स

5m11*n3m5*nz++20÷

5                   n 5             implicit n for illustration
 m                  n**5
  11                n**5 11
    *               11*n**5
     n              11*n**5 n
      3             11*n**5 n 3
       m            11*n**5 n**3
        5           11*n**5 n**3 5
         *          11*n**5 5*n**3
          n         11*n**5 5*n**3 n
           z        11*n**5 5*n**3 4*n
            +       11*n**5 5*n**3+4*n
             +      11*n**5+5*n**3+4*n
              20    11*n**5+5*n**3+4*n 20
                ÷  (11*n**5+5*n**3+4*n)÷20

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

ओएसिस एक स्टैक-आधारित भाषा है जो आवर्ती अनुक्रमों के लिए अनुकूलित है। हालाँकि, इस मामले के लिए पुनरावर्तन सूत्र बहुत लंबा होगा।


2

ब्रेकीलॉग , 17 बाइट्स

{>ℕ|↰}ᶠ⁶ḍD+ᵐ=∧D≜ᶜ

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

व्याख्या

{  |↰}ᶠ⁶           Generate a list of 6 variables [A,B,C,D,E,F]...
 >ℕ                  ...which are all in the interval [0, Input)
        ḍD         Dichotomize; D = [[A,B,C],[D,E,F]]
          +ᵐ=      A + B + C must be equal to D + E + F
             ∧
              D≜ᶜ  Count the number of possible ways you can label the elements of D while
                     satisfying the constraints they have

मुझे लगता है कि स्वचालित रूप से साथ आना चाहिए
लीक नून

@LeakyNun आप अपने आप से नहीं चल सकते , यह एक रूपक है।
घातक

लेकिन फिर भी यदि इसका उपयोग किसी सूची में किया जाता है, तो उस सूची को लेबल करके डिफ़ॉल्ट को विधेय बनाया जा सकता है, नहीं?
चटाई

@ यह इस तरह से बनाया जा सकता है, लेकिन अभी आप एक चर पर एक रूपक का उपयोग नहीं कर सकते हैं।
घातक

1

जावास्क्रिप्ट, 24 बाइट्स

x=>11*x**5/20+x**3/4+x/5

OEIS पृष्ठ से सूत्र का उपयोग करता है।

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


मुझे लगता है कि आप के साथ दो बाइट्स बचा सकता हैx=>x**5*.55+x**3/4+x/5
ETHproductions

@ETHproductions फ्लोटिंग पॉइंट एरर हैं अगर मैं * 11/20 के बजाय * .55 का उपयोग करता हूँ
fəˈn Aprt'k

1

ऑक्टेव , 25 23 21 बाइट्स

@(n).55*n^5+n^3/4+n/5

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

OEIS- प्रवेश से सूत्र का उपयोग करता है। सूत्र को फिर से व्यवस्थित करके और इसके बजाय का उपयोग करके दो चार बाइट्स सहेजे , धन्यवाद के लिए ftesn fourtɪk।.5511/20


1

पायथन 2.7, 109 105 99 96 बाइट्स

कुछ बाइट्स बचाने के लिए धन्यवाद ETHproductions और डेनिस:

from itertools import*
lambda s:sum(sum(x[:3])==sum(x[3:])for x in product(range(s),repeat=6))

दिलचस्प है, क्या पायथन 3 में 2.7 से कम दूरी के कार्य नहीं हैं?
मैजिक ऑक्टोपस Urn

sum(sum(x[:3])==sum(x[3:])for x ...)और भी छोटा होगा। इसके अलावा, from itertools import*एक बाइट बचाता है।
डेनिस

आपको पहले स्थान की आवश्यकता नहीं है for। इसके अलावा, हमें डिफ़ॉल्ट रूप से नामित किए जाने वाले कार्यों की आवश्यकता नहीं है, इसलिए आप हटा सकते हैं h=
डेनिस

1

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

केली लोडर के OEIS फॉर्मूले को लागू करने का तरीका छोटा है, लेकिन यह संख्याओं की सीधे गणना करता है:

Count[Tr/@#~Partition~3&/@Range@#~Tuples~6,{n_,n_}]&

खैर, यह वास्तव में समाधान की संख्या के साथ गिना जाता है 1 <= a,b,c,x,y,z <= n। यह एक ही संख्या है, क्योंकि सभी चरों में 1 को जोड़ने से समानता नहीं बदलती है।

स्पष्टीकरण: Range@#~Tuples~61 और n के बीच छह पूर्णांकों की सभी सूचियों को बनाता है, #~Partition~3&/@प्रत्येक सूची को लंबाई 3 की दो सूचियों में विभाजित करता है, Tr/@इन सब्लिस्ट्स को बताता है, और Count[...,{n_,n_}]गिनता है कि कितने जोड़ों का योग समान है। के बीच पूर्वता के क्रम के साथ मैं बहुत भाग्यशाली हो गया f @, f /@और ~f~!


1

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

@(n)round(max(ifft(fft(~~(1:n),n^2).^6)))

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

मेरे MATL उत्तर के समान है , लेकिन fftपर्याप्त संख्या में ( ) के साथ असतत फूरियर ट्रांसफॉर्म ( ) के माध्यम से दृढ़ संकल्प की गणना करता है n^2~~(1:n)के एक छोटे संस्करण के रूप में प्रयोग किया जाता है ones(1,n)roundफ़्लोटिंग पॉइंट त्रुटियों के कारण आवश्यक है।


0

CJam , 17 बाइट्स

ri,6m*{3/::+:=},,

11टीआईओ पर समय का इनपुट , और 12मेमोरी से उच्चतर रन आउट।

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

व्याख्या

ri                e# Read an int from input.
  ,               e# Generate the range 0 ... input-1.
   6m*            e# Take the 6th Cartesian power of the range.
      {           e# Keep only the sets of 6 values where:
       3/         e#  The set split into (two) chunks of 3
         ::+:=    e#  Have the sums of both chunks equal.
              },  e# (end of filter)
                , e# Get the length of the resulting list.

0

क्लोजर, 79 बाइट्स

#(count(for[r[(range %)]a r b r c r x r y r z r :when(=(+ a b c)(+ x y z))]1))

कोड में दोहराव के टन, चर की बड़ी संख्या पर एक मैक्रो कम हो सकता है।

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