В математике немало средств, таких как среднее арифметическое, среднее геометрическое и многие другие ...
Определения и задачи
Обратите внимание, что это определения для двух натуральных чисел *:
Корень средний квадрат квадратный корень из суммы их квадратов половинок ( ).
Среднее арифметическое их сумма, вдвое ( ).
Среднее геометрическое есть квадратный корень из их произведения ( ).
Гармоническое среднее является 2 , деленное на сумму их обратными ( = ).
Для двух целых чисел a и b, таких что a, b ∈ [1, + ∞) , суммировать упомянутые выше средние a и b . Ваши ответы должны быть с точностью не менее 3 десятичных знаков, но вам не нужно беспокоиться об ошибках округления или точности с плавающей запятой.
Тестовые случаи
a, b -> Вывод 7, 6 -> 25,961481565148972 10, 10 -> 40 23, 1 -> 34.99131878607909 2, 4 -> 11,657371451581236 345, 192 -> 1051.7606599443843
Вы можете увидеть правильные результаты для большего количества тестов, используя эту программу . Это код-гольф , поэтому выигрывают самые короткие действительные предложения, которые следуют стандартным правилам.
* Есть много других средств, но для целей этой задачи мы будем использовать те, которые упомянуты в разделе «Определения».
источник
Ответы:
Haskell , 48 байтов
Попробуйте онлайн!
При этом используется тот факт, что среднеквадратичные, арифметические, гармонические и геометрические средние значения являются частными случаями обобщенного среднего
((a**p+b**p)/2)**(1/p)
дляp=2,1,-1,0
. Среднее геометрическое значение использует пределp->0+
, аппроксимируемый какp=1e-9
достаточный для точности.источник
Mathematica , 37 байт
-2 байта благодаря Мартину Эндеру. -6 байт благодаря Jenny_mathy и возможность многократного использования функции благодаря JungHwan Min.
Попробуйте онлайн!
Mathematica , 55 байт
Попробуйте онлайн!
¯ \ _ (ツ) _ / ¯
источник
((#^2+#2^2)/2)^.5+(#+#2)/2+(#1#2)^.5+2#*#2/(#+#2)&
((#^2+#2^2)/2)^.5+(+##)/2+(1##)^.5+2/(1/#+1/#2)&
(((s=+##)^2-2##)/2)^.5+s/2+(1##)^.5+2##/s&
(2(s=+##/2)^2-t)^.5+s+(t=1##)^.5+t/s&
(t=1##)^.5+(2(s=+##/2)^2-t)^.5+s+t/s&
. Просто для облегчения повторного использования функции (без необходимости запускатьClear@t
перед каждой итерацией).Python 3 , 57 байт
Попробуйте онлайн!
источник
<<1
неправильно усекать до целого, когдаa
иb
являются противоположными четности.>>1
./2
внешнюю сторону, которую это компенсирует. Хороший трюк.R , 52 байта
Попробуйте онлайн!
источник
Haskell , 48 байтов
Попробуйте онлайн!
Объяснение:
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)
, Среднее гармоническое.источник
Октава ,
444241 байтПопробуйте онлайн!
Обратите внимание, что TIO не имеет установленного пакета сигналов, поэтому я определил
rms()
в заголовке. На Octave Online вы можете попробовать это, если выpkg load nan
. Я не уверен, есть ли какие-либо онлайн-переводчики, которые загружают его по умолчанию, но в большинстве систем этот пакет будет загружен по умолчанию.Спасибо Тому Карпентеру за обнаружение маленькой ошибки в 2 байта.
Это определяет анонимную функцию, принимая входные данные как вектор
n=[a,b]
. Затем мы используем встроенное присваивание, чтобы уменьшить вычисление HM до справедливостиz/q
.источник
f=
в код, так что это делает его 42 байта. (что, конечно, приводит к тому, что «перечеркнутый 44 выглядит как 44») - Попробуйте онлайн!^.5
сохраняет байты надsqrt
. Также удалитеf=
из кода часть в ссылкеЖеле , 17 байт
Попробуйте онлайн!
источник
PḤ÷S,µ³²Æm,P½,µÆmFS
(19 байт) - хотя стоит упомянуть, может быть, это источник вдохновения. РЕДАКТИРОВАТЬ: > _> Теперь я понимаю, что я могу просто использовать+
вместо,
½
, которые были сохранены, и это спасло байт.PḤ÷S
может быть заменен:İSHİ
05AB1E ,
1816 байт-2 байта благодаря Эрику Аутгольферу
Объяснение:
Попробуйте онлайн!
источник
nO;t¹O;¹Pt2¹zO/O
[a, b]
.Шелуха , 19 байт
Попробуйте онлайн!
-1 спасибо H.PWiz .
источник
ö√½Σm□
может бытьȯ√½ṁ□
MATL ,
211817 байтПопробуйте онлайн!
-3 байта благодаря Луису Мендо.
объяснение
источник
Ом v2 , 16 байт
Попробуйте онлайн!
объяснение
... если бы у Ома была многословная разновидность. :П
источник
TI-Basic (TI-84 Plus CE),
2725 байт-2 байта от Скрубла
Принимает список из двух чисел
Ans
и неявно возвращает сумму четырех средних; например, запустить с,{7,6}:prgmNAME
чтобы получить25.96148157
.Объяснение:
√(sum(Ans2)/2)
: 8 байт: среднеквадратичное значениеmean(Ans)
:53 байта: среднее арифметическое (старое:sum(Ans)/2
)2prod(Ans)/sum(Ans)
: 8 байт: среднее гармоническое√(prod(Ans
: 3 байта: среднее геометрическое+3 байта за 3
+
esисточник
sum(Ans)/2)
.mean(
встроенного.SOGL V0.12 , 22 байта
Попробуй здесь!
источник
Dyalog APL , 44 байта
Попробуйте онлайн!
Dyadic DFS с
a
слева иb
справа.источник
JavaScript, 47 байт
довольно тривиально
Показать фрагмент кода
источник
Java 8, 63 байта
Принимает оба параметра как
Double
и выводит какDouble
.Попробуй это здесь.
Или (также 63 байта ):
Принимает оба параметра как
Integer
и выводит какDouble
.Попробуй это здесь.
источник
Python 2 , 58 байт
Попробуйте онлайн!
Принимает входные данные как поплавки
источник
ARBLE ,
4945 байт-4 байта благодаря мистеру Xcoder
Попробуйте онлайн!
источник
На самом деле 15 байтов
Попробуйте онлайн!
Yay На самом деле есть встроенный для Root Square Mean!
источник
Юлия ,
4947 байтПопробуйте онлайн!
источник
Groovy, 54 байта
-2 спасибо мистеру Xcoder за редактирование, которое заставило меня чувствовать себя глупым.
источник
a**2
сa*a
иb**2
сb*b
C # (.NET Core) , 76 байт
+13 байт для
using System;
Попробуйте онлайн!
источник
using System;
удалив обаSystem.
. PS: Если вы хотите менее скучный путь (с точно такой же байт-счетчик 76)using System;a=>b=>(a+b+Math.Sqrt(a*a+b*b<<1))/2+Math.Sqrt(a*b)+2d*a*b/(a+b)
. ;)Jq 1,5 , 76 байт
расширенный
Попробуйте онлайн!
источник