두 정수의 평균 합


12

수학에는 산술 평균, 기하 평균 및 기타 여러 가지와 같은 상당히 많은 수단이 있습니다.

정의와 과제

다음은 두 개의 양의 정수 *에 대한 정의입니다 .

  • 루트 평균 제곱은 절반 자신의 제곱의 합 (의 제곱근이다 ).

  • 산술 평균이 절반 그 합이다 ( ).

  • 기하 평균은 그들의 제품의 제곱근이다 ( ).

  • 조화 평균 이다 (2) 자신의 역수의 합 (나눈 = ).

a, b ∈ [1, + ∞)가 되도록 두 개의 정수 ab가 주어지면 위에서 언급 한 ab 의 평균을 합산합니다 . 답은 소수점 이하 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
적어도 Mathematica는 내장되어 있지 않습니다. 권리?
NieDzejkob

@NieDzejkob 나는 그렇게 생각하지 않습니다 :-)
Mr. Xcoder

@NieDzejkob 비록 각 수단에 대해 내장이 있다고 생각되지만.
Outgolfer Erik

답변:


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 바이트

Martin Ender 덕분에 -2 바이트 Jenny_mathy 덕분에 -6 바이트, JungHwan Min 덕분에 함수 재사용 성.

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

온라인으로 사용해보십시오!

Mathematica , 55 바이트

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

온라인으로 사용해보십시오!

¯ \ _ (ツ) _ / ¯


1
대안 :((#^2+#2^2)/2)^.5+(#+#2)/2+(#1#2)^.5+2#*#2/(#+#2)&
Mr. Xcoder

1
2 바이트 오프 :((#^2+#2^2)/2)^.5+(+##)/2+(1##)^.5+2/(1/#+1/#2)&
Martin Ender

2
42 바이트 : (((s=+##)^2-2##)/2)^.5+s/2+(1##)^.5+2##/s&
J42161217

6
37 바이트 : (2(s=+##/2)^2-t)^.5+s+(t=1##)^.5+t/s&
J42161217

2
@Jenny_mathy의 버전에 대한 약간의 수정 (같은 바이트 수) : (t=1##)^.5+(2(s=+##/2)^2-t)^.5+s+t/s&. Clear@t각 반복 전에 실행하지 않고도 함수를 쉽게 재사용 할 수 있습니다 .
JungHwan Min



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 바이트의 작은 실수를 찾아낸 Tom Carpenter에게 감사합니다.

이것은 입력을 벡터로 취하는 익명 함수를 정의합니다 n=[a,b]. 그런 다음 인라인 할당을 사용하여 HM의 계산을 단지로 줄 z/q입니다.


1
f=코드 에 포함 할 필요가 없으므로 42 바이트가됩니다. (물론 "교차 된 44는 44처럼 보입니다")- 온라인으로 사용해보십시오!
톰 카펜터

죄송합니다. Octave-Online에서 복사 한 결과입니다. 감사.
Sanchises

TIO는 기본적으로 설치된 패키지를로드합니다. 시그널 패키지는 설치되어 있지 않습니다.
Luis Mendo

@LuisMendo 정확히, MATLAB과 Octave의 사실상의 표준은 모든 패키지가 설치되고로드되었다고 가정하는 것입니다.
Sanchises

^.5 바이트저장합니다sqrt . 또한 f=링크의 코드 부분에서 제거
Luis Mendo

2

젤리 , 17 바이트

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

온라인으로 사용해보십시오!


링크의 좋은 조합. 한 줄로 할 수있는 최선은 PḤ÷S,µ³²Æm,P½,µÆmFS(19 바이트)입니다. 나는 언급 할 가치가 있지만 영감의 원천 일 수 있습니다. 편집 : > _> 이제 +대신 대신 사용할 수 있음을 알고 있습니다,
Mr. Xcoder

@ Mr.Xcoder 처음에는 18 바이트 버전 (개정 기록이 아님)이 있었지만 그 내용을 ½함께 모 으려고 생각 하여 바이트를 저장했습니다.
Outgolfer Erik

또 다른 가능한 영감의 원천은 다음 PḤ÷S으로 대체 될 수 있습니다.İSHİ
Mr. Xcoder

@ Mr.Xcoder도 그렇게 생각했습니다
Erik the Outgolfer

2

05AB1E , 18 16 바이트

Outgolfer Erik 덕분에 -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
Outgolfer Erik

@EriktheOutgolfer 나는 그것이 효과가 있다고 생각하지 않습니다.
Okx

목록으로 입력하십시오 [a, b].
Outgolfer Erik

@EriktheOutgolfer 물론입니다! 왜 그렇게 생각하지 않았습니까?
Okx


2

MATL , 21 18 17 바이트

UYmGphX^GYmGpy/vs

온라인으로 사용해보십시오!

Luis Mendo 덕분에 -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
나는 조금 전에 산술 평균을 위해 내장을 추가했다고 확신하지만 여기에 바이트를 저장하지는 않습니다.
Nick Clifford

2

TI 기본 (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 in 이후에 추가 할 수없는 닫는 괄호가 여기에 있다고 생각합니다 sum(Ans)/2).
kamoroso94

@ kamoroso94 감사합니다.
pizzapants184.

mean(내장으로 2 바이트를 저장하십시오 .
Khuldraeseth na'Barya



1

자바 스크립트, 47 바이트

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

아주 사소한





1

실제로 15 바이트

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

온라인으로 사용해보십시오!

Yay는 실제로 Root Square Mean에 내장되어 있습니다!

æßπ√ + ßΣßπτ / + ßµ + ~ 전체 프로그램.

~ 산술 평균.
 ßπ√ ~ 곱, 제곱근 (기하학적 평균 계산).
    + ~ 추가.
     ßΣ ~ 입력의 합을 누릅니다.
       ßπτ ~ 입력의 곱을 두 배로 밉니다.
          / ~ 나누기.
           + ~ 추가.
            ßµ ~ 푸시 제곱 평균.
              + ~ 추가.


1

그루비, 54 바이트

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

바보 같은 느낌을 준 편집자 Xcoder에게 감사드립니다.


1
나는 당신이 대체 할 수있는 생각 a**2a*ab**2함께b*b
씨 Xcoder


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

온라인으로 사용해보십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.