दो पूर्णांकों के साधन


12

गणित में काफी कुछ साधन हैं, जैसे अंकगणितीय माध्य, ज्यामितीय माध्य और कई अन्य ...

परिभाषाएँ और कार्य

ध्यान दें कि ये दो सकारात्मक पूर्णांकों की परिभाषाएँ हैं :

  • जड़ मतलब वर्ग को आधा कर दिया (अपने वर्गों का योग का वर्गमूल है )।

  • समांतर माध्य उनका योग, आधा कर दिया है ( )।

  • ज्यामितीय माध्य उनके उत्पाद का वर्गमूल है ( )।

  • हरात्मक माध्य है 2 उनके प्रतिलोम का योग (से विभाजित = )।

दो पूर्णांक a और b को देखते हुए कि a, b, [1, + sum ) , a और b के ऊपर उल्लिखित साधनों को जोड़ते हैं । आपके उत्तर कम से कम 3 दशमलव स्थानों पर सटीक होने चाहिए, लेकिन आपको राउंडिंग या फ्लोटिंग-पॉइंट सटीक त्रुटियों के बारे में चिंता करने की आवश्यकता नहीं है।

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

a, b -> आउटपुट

7, 6 -> 25.961481565148972
10, 10 -> 40
23, 1 -> 34.99131878607909
2, 4 -> 11.657371451581236
345, 192 -> 1051.7606599443843

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

* कई अन्य साधन हैं, लेकिन इस चुनौती के प्रयोजनों के लिए हम "परिभाषा" खंड में उल्लिखित का उपयोग करेंगे।



10
साधन का उत्पादन करने के लिए कहा जाना चाहिए। -1 (नहीं)।
मेरा सर्वनाम monicareinstate

9
कम से कम उसके लिए कोई मैथमेटिका निर्मित नहीं है। सही?
नीदजजकोब

@NieDzejkob मुझे ऐसा नहीं लगता :-)
श्री एक्सकोडर

@NieDzejkob हालांकि मुझे संदेह है कि हर एक साधन के लिए भवन हैं।
आउटगॉल्फ

जवाबों:


13

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

a%b=sum[((a**p+b**p)/2)**(1/p)|p<-[2,1,-1,1e-9]]

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

यह तथ्य यह है कि जड़ वर्ग, गणित, हार्मोनिक, और ज्यामितीय साधन के सभी विशेष मामले हैं का उपयोग करता है सामान्यीकृत मतलब ((a**p+b**p)/2)**(1/p) के लिए p=2,1,-1,0। ज्यामितीय माध्य सीमा का उपयोग करता है p->0+, p=1e-9जिसे अनुमान लगाया जाता है जो सटीकता के लिए पर्याप्त होता है।


9

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

मार्टिन बायर को -2 बाइट्स धन्यवाद। -6 बाइट्स के लिए धन्यवाद Jenny_mathy और फ़ंक्शन पुन: प्रयोज्यता धन्यवाद JungHwan Min के लिए।

(t=1##)^.5+(2(s=+##/2)^2-t)^.5+s+t/s&

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

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

RootMeanSquare@#+Mean@#+GeometricMean@#+HarmonicMean@#&

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

¯ \ _ (ツ) _ / ¯


1
एक विकल्प:((#^2+#2^2)/2)^.5+(#+#2)/2+(#1#2)^.5+2#*#2/(#+#2)&
श्री एक्सकोडर

1
2 बाइट्स:((#^2+#2^2)/2)^.5+(+##)/2+(1##)^.5+2/(1/#+1/#2)&
मार्टिन एंडर

2
42 बाइट्स: (((s=+##)^2-2##)/2)^.5+s/2+(1##)^.5+2##/s&
1842 पर J42161217

6
37 बाइट्स: (2(s=+##/2)^2-t)^.5+s+(t=1##)^.5+t/s&
J42161217

2
@ जेनी_मैथी के संस्करण (एक ही बाइट काउंट) के लिए थोड़ा सा फिक्स (t=1##)^.5+(2(s=+##/2)^2-t)^.5+s+t/s&:। बस फ़ंक्शन का पुन: उपयोग करना आसान बनाने के लिए ( Clear@tप्रत्येक पुनरावृत्ति से पहले चलने के बिना )।
जुंगह्वान मिन ऑक्ट

5

पायथन 3 , 57 बाइट्स

lambda a,b:(a+b+(a*a+b*b<<1)**.5)/2+(a*b)**.5+2*a*b/(a+b)

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


<<1गलत तरीके से एक पूर्णांक जब करने के लिए काट-छांट करने जा रहा है aऔर bविपरीत parities हैं।
xnor

@xnor नहीं यह नहीं है :) आप सोच रहे हैं >>1
orlp

1
ओह, मेरी गलती! मैं देख रहा हूं कि अब /2बाहर है कि यह क्षतिपूर्ति कर रहा है। अच्छी चाल।
xnor


3

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

a?b|s<-a+b,p<-a*b=s/2+sqrt(s^2/2-p)+sqrt p+2*p/s

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

स्पष्टीकरण:

s/2 = (a+b)/2: अंकगणित माध्य।

sqrt(s^2/2-p) = sqrt((a^2+2*a*b+b^2)/2-a*b) = sqrt((a^2+b^2)/2): मूल का मतलब वर्ग है।

sqrt p = sqrt(a*b)। ज्यामितीय माध्य।

2*p/s = 2*a*b/(a+b)। हार्मोनिक का मतलब है।


3

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

@(n)(q=mean(n))+rms(n)+(z=prod(n))^.5+z/q

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

ध्यान दें कि TIO में सिग्नल पैकेज स्थापित नहीं है, इसलिए मैंने rms()हेडर में परिभाषित किया है। पर सप्टक ऑनलाइन , आप इसे अगर आप कोशिश कर सकते हैं pkg load nan। मुझे यकीन नहीं है कि कोई भी ऑनलाइन दुभाषिए हैं जो इसे डिफ़ॉल्ट रूप से लोड करते हैं, लेकिन अधिकांश सिस्टम में यह पैकेज डिफ़ॉल्ट रूप से लोड होता है।

2 बाइट्स की एक छोटी सी गलती को खोलने के लिए टॉम कारपेंटर का धन्यवाद।

यह एक अनाम फ़ंक्शन को परिभाषित करता है, इनपुट को वेक्टर के रूप में लेता है n=[a,b]। हम तब एचएम की गणना को कम करने के लिए इनलाइन असाइनमेंट का उपयोग करते हैं z/q


1
आपको f=कोड में शामिल करने की आवश्यकता नहीं है , जिससे यह 42 बाइट्स बनाता है। (जो निश्चित रूप से "44 की तरह 44 को पार कर गया" की ओर जाता है) - इसे ऑनलाइन आज़माएं!
टॉम कारपेंटर

ओह, यह ऑक्टेव-ऑनलाइन से कॉपी करने की कला है! धन्यवाद।
Sanchises

टीआईओ लोड किए गए पैकेजों को डिफ़ॉल्ट रूप से स्थापित करता है, इसमें सिर्फ सिग्नल पैकेज स्थापित नहीं होता है
लुइस मेंडो

@LuisMendo बिल्कुल, मुझे लगता है कि MATLAB और ऑक्टेव का टी डे वास्तव मानक है कि सभी पैकेज स्थापित और लोड किए गए हैं।
Sanchises

^.5 एक बाइट की बचत होती है अधिक sqrt। इसके अलावा, f=लिंक के कोड भाग से हटा दें
लुइस मेंडो

2

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

²Æm,P½S
PḤ÷S+Ç+Æm

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


लिंक का अच्छा संयोजन। एक पंक्ति में मैं जो सबसे अच्छा कर सकता था, वह है PḤ÷S,µ³²Æm,P½,µÆmFS(19 बाइट्स) - मैं हालांकि यह ध्यान देने योग्य है, शायद यह प्रेरणा का स्रोत है। संपादित करें: > _> अब मुझे एहसास है कि मैं +इसके बजाय का उपयोग कर सकता हूं,
श्री Xcoder

@ Mr.Xcoder मैं पहली बार (संशोधन इतिहास में नहीं) पर एक 18-बाइट संस्करण था, लेकिन फिर लोगों को ½एक साथ रखने के लिए लगा , और इसने एक बाइट को बचाया।
आउटगॉल्फ

प्रेरणा का एक अन्य संभावित स्रोत: PḤ÷Sइसके द्वारा प्रतिस्थापित किया जा सकता है:İSHİ
श्री एक्सकोडर

@ Mr.Xcoder ने यह भी सोचा
एरिक आउटगॉल्फर

2

05AB1E , 18 16 बाइट्स

-2 बाइट्स एग्री द आउटग्रॉफ़र के लिए धन्यवाद

nO;t¹O;¹Pt2¹zO/O

स्पष्टीकरण:

nO;t                Root mean square
n                    Raise [a, b] to [a ** 2, b ** 2]
 O                   Sum
  ;                  Half
   t                 Square root
    ¹O;             Arithmetic mean
    ¹                Retrieve stored [a, b]
     O               Sum
      ;              Half
       ¹Pt          Geometric mean
       ¹             Retrieve stored [a, b]
        P            Product
         t           Square root
          2¹zO/     Harmonic mean
           ¹         Retrieved stored [a, b]
            z        Vectorised inverse to [1 / a, 1 / b]
             O       Sum
          2   /      Get 2 divided by the sum
               O    Sum of all elements in stack

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


nO;t¹O;¹Pt2¹zO/O
आउटगॉल्फ

@EriktheOutgolfer मुझे नहीं लगता कि यह काम करता है।
ओकेक्स

सूची के रूप में इनपुट लें [a, b]
आउटगॉल्फ

@EriktheOutgolfer बेशक! मैंने ऐसा क्यों नहीं सोचा।
ओकेक्स

2

हस्क , 19 बाइट्स

ṁëȯ√½ṁ□o½Σo√Π§/ΣoDΠ

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

-1 H.PWiz को धन्यवाद ।


ö√½Σm□हो सकता हैȯ√½ṁ□
H.PWiz

@ H.PWiz> _> मुझे पता था कि मैं कुछ भूल
जाऊंगा


@ H.PWiz अभी भी सीख रहा है! : पी
एरिक आउटगोल्फर

2

MATL , 21 18 17 बाइट्स

UYmGphX^GYmGpy/vs

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

-3 बाइट्स लुइस मेंडो की बदौलत।

व्याख्या

UYm               % Mean of squares, 
                  % Stack: { (a^2+b^2)/2 }
   Gp             % Product of input, a*b
                  % Stack: { (a^2+b^2)/2, a*b }
     hX^          % Concatenate into array, take square root of each element.
                  % Stack: { [RMS, HM] } 
        GYm       % Arithmetic mean of input.
                  % Stack: { [RMS,GM], AM }
           Gpy    % Product of input, duplicate AM from below.
                  % Stack: { [RMS,GM], AM, a*b, AM
              /   % Divide to get HM
                  % Stack { [RMS,GM], AM, HM}
               vs % Concatenate all to get [RMS,GM,AM,HM], sum.

2

ओम v2 , 16 बाइट्स

²Σ½¬³Π¬³Σ½D³Πs/Σ

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

व्याख्या

square sum halve sqrt input product sqrt input sum halve dupe input product swap div sum

... अगर ओम का एक क्रियात्मक रूप होता। : पी

²Σ½¬³Π¬³Σ½D³Πs/Σ

                  implicit input       [[7, 6]]
²Σ½¬              root mean square
²                  square              [[49, 36]]
 Σ                 sum                 [85]
  ½                halve               [42.5]
   ¬               square root         [6.519]
    ³Π¬           geometric mean
    ³              push first input    [6.519, [7, 6]]
     Π             product             [6.519, 42]
      ¬            square root         [6.519, 6.481]
       ³Σ½        arithmetic mean
       ³           push first input    [6.519, 6.481, [7, 6]]
        Σ          sum                 [6.519, 6.481, 13]
         ½         halve               [6.519, 6.481, 6.500]
          D³Πs/   harmonic mean
          D        duplicate           [6.519, 6.481, 6.500, 6.500]
           ³       push first input    [6.519, 6.481, 6.500, 6.500, [7, 6]]
            Π      product             [6.519, 6.481, 6.500, 6.500, 42]
             s     swap                [6.519, 6.481, 6.500, 42, 6.500]
              /    divide              [6.519, 6.481, 6.500, 6.461]
               Σ  sum                  [25.961]
                  implicit output      [25.961]

1
मुझे पूरा यकीन है कि मैंने थोड़ी देर पहले एक बिल्ट-इन अंकगणित का मतलब जोड़ा था, लेकिन यह आपको यहां किसी भी बाइट्स को नहीं बचाएगा।
निक क्लिफर्ड

2

टीआई-बेसिक (TI-84 Plus CE), 27 25 बाइट्स

√(sum(Ans2)/2)+mean(Ans)+2prod(Ans)/sum(Ans)+√(prod(Ans

स्क्रूबल से -2 बाइट्स

दो संख्याओं की सूची लेता है Ans, और संक्षेप में चार साधनों का योग देता है; जैसे {7,6}:prgmNAMEपाने के लिए दौड़ते हैं 25.96148157

स्पष्टीकरण:

√(sum(Ans2)/2): 8 बाइट्स: रूट माध्य वर्ग

mean(Ans): 5 3 बाइट्स: समांतर माध्य (पुराने: sum(Ans)/2)

2prod(Ans)/sum(Ans): 8 बाइट्स: हार्मोनिक माध्य

√(prod(Ans: 3 बाइट्स: ज्यामितीय माध्य

3 +es के लिए +3 बाइट्स


मुझे लगता है कि आपके पास 2 के बाद एक अतिरिक्त बेजोड़ कोष्ठक है sum(Ans)/2)
kamoroso94

@ kamoroso94 फिक्स्ड, धन्यवाद।
pizzapants184

mean(बिलिन के साथ दो बाइट्स सहेजें ।
खुल्द्रेसैथ न'बर्या



1

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

a=>b=>(c=a+b)/2+(c*c/2-(d=a*b))**.5+d**.5+2*d/c

काफी तुच्छ


1

जावा 8, 63 बाइट्स

a->b->Math.sqrt((a*a+b*b)/2)+(a+b)/2+Math.sqrt(a*b)+2/(1/a+1/b)

दोनों मापदंडों के रूप में Doubleऔर आउटपुट के रूप में लेता है Double
इसे यहाँ आज़माएँ।

या ( 63 बाइट्स भी ):

a->b->(a+b+Math.sqrt(a*a+b*b<<1))/2+Math.sqrt(a*b)+2d*a*b/(a+b)

दोनों मापदंडों के रूप में Integerऔर आउटपुट के रूप में लेता है Double
इसे यहाँ आज़माएँ।




1

दरअसल , 15 बाइट्स

æßπ√+ßΣßπτ/+ßµ+

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

याय वास्तव में रूट स्क्वायर मीन के लिए एक अंतर्निर्मित है!

æßπ√ +। / + ßµ + ~ पूर्ण कार्यक्रम।

æ ~ अंकगणित माध्य।
 ßπ√ ~ उत्पाद, वर्गमूल (ज्यामितीय माध्य की गणना करता है)।
    + ~ जोड़।
     ßΣ ~ इनपुट का योग धक्का।
       ßπτ ~ इनपुट के उत्पाद को दोगुना पुश करें।
          / ~ फूट डालो।
           + ~ जोड़।
            ßµ ~ पुश रूट स्क्वायर मीन।
              + ~ जोड़।


1

ग्रूवी, 54 बाइट्स

{a,b->c=a+b;((a*a+b*b)/2)**0.5+c/2+(a*b)**0.5+2*a*b/c}

-2 श्री एक्सकोडर को एक संपादन के लिए धन्यवाद जिसने मुझे गूंगा महसूस किया।


1
मुझे लगता है कि आप की जगह ले सकता a**2के साथ a*aऔर b**2साथb*b
श्री Xcoder

1

C # (.NET Core) , 76 बाइट्स

+13 बाइट्स के लिए using System;

a=>b=>Math.Sqrt((a*a+b*b)/2)+(a+b)/2+Math.Sqrt(a*b)+2/(1/a+1/b)

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


आप एक बाइट को बचा सकते हैं using System;और दोनों को हटा सकते हैं System.। पुनश्च: यदि आप कम उबाऊ तरीका चाहते हैं (ठीक उसी बाइट-गिनती के साथ 76) using System;a=>b=>(a+b+Math.Sqrt(a*a+b*b<<1))/2+Math.Sqrt(a*b)+2d*a*b/(a+b):। ;)
केविन क्रूज़सेन

0

Jq 1.5 , 76 बाइट्स

[pow((map(pow(.;2))|add)/2;.5),add/2,pow(.[0]*.[1];.5),2/(map(1/.)|add)]|add

विस्तारित

[
  pow((map(pow(.;2))|add)/2;.5)  # root mean square
, add/2                          # arithmetic mean
, pow(.[0]*.[1];.5)              # geometric mean
, 2/(map(1/.)|add)               # harmonic mean
]
| add                            # that just about sums it up for mean

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

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