В этом задании вы будете определять, насколько спорным является голосование, учитывая множество других голосов, вычисляя число, называемое С-фактором. Вы спросите, что такое С-фактор?
Ну, представьте, у вас есть несколько голосов на выборах. Мы будем использовать 1
и 0
ради задачи представлять двух разных кандидатов на выборах. Вот десять голосов на наших выборочных выборах:
0110111011
Теперь, скажем, мы хотим найти C-фактор любого голоса за кандидата 0
. Мы можем сделать это с помощью следующей функции:
В , o
это голосование , мы хотим определить C-фактор для, и v
является массивом голосов. Итак, используя нашу функцию, чтобы получить C-фактор любого голоса за кандидата 0
:
Более низкий C-фактор показывает, что голосование было менее спорным по сравнению с другими голосами. Таким образом, голосование за кандидата 0
более отличается от других голосов, чем голосование за кандидата 1
. Для сравнения, C-фактор для 1
голосования кандидата равен , поэтому он менее спорный, потому что он больше похож на другие голоса.
Соревнование
Напишите функцию чтобы определить C-фактор голосования с учетом результатов голосования .o
v
o
должно быть целым числом, либо0
или1
.v
должен быть массивом (или похожим типом контейнера в зависимости от языковых спецификаций) произвольной длины, содержащим нули и единицы.Функция должна вернуть или вывести на консоль полученный C-фактор с учетом параметров функции, используя приведенную выше формулу или модифицированный метод.
Удачи! Побеждает наименьшее количество байтов (победитель выбирается через пять дней).
mean(v)
равно 0,7 в вашем примере?abs(0 - 0.7)
равняется0.3
?Ответы:
Желе , 3 байта
Попробуйте онлайн!
Буквально просто «абсолютная разница значит».
Если вы инвертируете аргументы, вы можете инвертировать атомы.
источник
R , 23 байта
Попробуйте онлайн!
Задача сводится к вычислению пропорции значений,
v
отличных отo
(то естьmean(xor(o,v))
). Поэтому мы можем избежать использованияabs
.источник
APL (Dyalog Unicode) ,
9 85 байтПопробуйте онлайн!
Анонимный поезд. Спасибо @ Adám за сохраненный байт и благодаря @ngn за 3 байта!
Как:
источник
На самом деле , 3 байта
Попробуйте онлайн!
Объяснение:
источник
05AB1E , 3 байта
Попробуйте онлайн!
источник
α
тогдаÅA
; p0
/1
, ваш подход сначала получить среднее, а затем абсолютную разницу верен, когда мы сравним это с формулой в описании задачи. Только с 0s / 1s возможны альтернативные 3-байтовые символы, напримерÊÅA
.Октава , 16 байт
Попробуйте онлайн!
источник
Атташе ,
118 байтПопробуйте онлайн! Принимает аргументы как
f[o, v]
.Ничего страшного оригинального.
Альтернативные подходы
11 байт:
Average@`/=
11 байт:
${1-x~y/#y}
Считает вхожденияx
вy
деленное на длинуy
, а затем вычитает , что с1
.11 байт:
{1-_2~_/#_}
(для этого аргументы меняются местами)15 байт:
${Sum[x/=y]/#y}
более явная версия выше, безAverage
.источник
JavaScript, 38 байт
Попробуй это
источник
Протон , 26 байт
Попробуйте онлайн!
Выходные данные являются дробными, потому что Proton использует sympy вместо обычных чисел Python для большей точности.
(-7 байт; abs-diff означает, что значение короче среднего значения abs-diff; я на самом деле тупой)
-1 байт благодаря штанге
источник
Perl 6 , 20 байт
Попробуйте онлайн!
* X!= *
является анонимной функцией, которая принимает не равное произведение двух своих аргументов. Это производит последовательность логических значений; например,1 X!= (1, 0, 1)
оценивает в(False, True, False)
.{ @_.sum / @_ }
это еще одна анонимная функция, которая возвращает среднее значение своих аргументов. BooleanTrue
оценивает1
численно иFalse
до0
.o
Оператор сочиняет эти две функции в одном.источник
Подключить , 3 байта
Попробуйте онлайн!
Язык очень сильно вдохновлен Jelly до такой степени, что, вероятно, мне больше нравится экспериментировать, пытаясь воссоздать структуру того, как Jelly анализируется с моим собственным кодом.
-1 байт благодаря мистеру Xcoder
источник
n
вместо_...A
сохранения 1 ( Попробуйте онлайн! ).Сетчатка 0.8.2 , 27 байт
Попробуйте онлайн!Выводит дробь. Объяснение: Первая группа захватывает,
o
а вторая группа захватывает каждую записьv
, в то время как условный гарантирует, что третья группа делает захват только тогда, когда голосование отличается.$#
Конструкция затем возвращает количество соответствующих захватов , как хотелось бы .источник
Perl 5
-MList::Util=sum
, 30 байтПопробуйте онлайн!
источник
K (Kona) , 17 байтов
Попробуйте онлайн!
источник
Вяз 0,19, 48 байтов
Онлайн демо здесь .
источник
C (gcc) , 62 байта
Попробуйте онлайн!
Звоните как
f(int o, int *v, int length_of_v)
.источник
Japt v2.0a0, 6 байт
Попробуй это
источник
JavaScript (Node.js) ,
4742 байта-5 байт от @arnauld
Попробуйте онлайн!
источник
Java 8, 47 байт
Попробуйте онлайн.
или альтернативно:
Попробуйте онлайн.
Для обоих входов есть
Supplier<DoubleStream>
для списка голосовv
иdouble
для голосованияo
.Объяснение:
источник
Общий Лисп 49 байтов
Решение:
Попробуйте онлайн
Объяснение:
источник
Рубин , 31 байт
Попробуйте онлайн!
источник
Pyth, 4 байта
Объяснение:
Ввод в формате:
с массивом голосов первым, а кандидат - вторым.
Попробуйте онлайн!
источник