Среднее из двух списков
Вызов
Учитывая два списка натуральных чисел, определите, можно ли переставить элементы в два новых списка так, чтобы новые списки имели одинаковое среднее арифметическое значение.
вход
Ввод может быть взят через STDIN или в качестве аргументов функции. Входные данные могут быть приняты в виде списка, или если ваш язык не поддерживает списки (или что-либо подобное, например, массивы / словари), то входные данные могут быть приняты в виде строки, разделенной запятой или пробелом. Это,
"1 4 8 2 5,3 1 5 2 5"
такой же как:
[ [1,4,8,2,5], [3,1,5,2,5] ]
Все входные списки будут одинаковой длины.
Выход
Если вы можете создать два новых списка с одинаковым средним значением, ваша программа / функция должна напечатать или вернуть среднее значение. Если вы не можете, ваша программа должна вывести печальное лицо :(
.
Обратите внимание, что переупорядоченные списки с равными средствами, если они существуют, не обязательно должны иметь одинаковую длину. Любое количество свопов может быть сделано для создания новых списков.
Примеры
1 4 8 2 5,3 1 5 2 5 -> 1 4 8 2 3,5 1 5 2 5 (swapped 3 and 5) -> 3.6
1 3 6 2,16 19 19 14 -> [[1,6,19,14],[3,2,16,19]] -> 10
2 6 2,6 3 5 -> 2 6,2 6 3 5 (moved 2) -> 4
90 80 20 1,40 60 28 18 -> :(
Это код-гольф, поэтому выигрывает самый короткий код в байтах. Как всегда, стандартные лазейки запрещены.
источник
Ответы:
Pyth, 24 байта
Попробуйте онлайн: демонстрация
Спасибо Деннису за то, что он заметил ошибку и сыграл в гольф один байт.
Объяснение:
источник
.O
)SWI-Пролог, 159 байт
Называется как
a([1,4,8,2,5],[3,1,5,2,5]).
источник
Юлия, 101 байт
Это создает функцию, которая принимает два массива и возвращает строку или число с плавающей запятой соответственно.
Ungolfed + объяснение:
источник
R, 94 байта
Я думаю, в основном так же, как Якуб. Если среднее значение обоих списков соответствует среднему значению любой комбинации значений в списках, но не включая общую длину списка, выведите среднее значение, в противном случае это будет печальное лицо.
Тестовый забег
источник
Желе , 22 байта
Попробуйте онлайн!
Совершено с помощью мистера Xcoder в чате
объяснение
источник
2 6 2,6 3 5 -> 2 6,2 6 3 5 (moved 2) -> 4
. Вы только разделяете его на две части равной длины.