Dans ce défi, vous déterminerez à quel point un vote est controversé, compte tenu d'un éventail d'autres votes, en déterminant un nombre appelé le facteur C. Quel est le facteur C, demandez-vous?
Eh bien, imaginez que vous avez plusieurs votes sur une élection. Nous allons utiliser 1
et 0
pour le défi de représenter deux candidats différents lors d'une élection. Voici les dix votes de notre exemple d'élection:
0110111011
Maintenant, disons que nous voulons trouver le facteur C de tout vote pour un candidat 0
. Nous pouvons le faire avec la fonction suivante:
En , o
est le vote pour lequel nous voulons déterminer le facteur C, et v
est un tableau de votes. Donc, en utilisant notre fonction, pour obtenir le facteur C de tout vote pour le candidat 0
:
Un facteur C inférieur montre que le vote a été moins controversé par rapport aux autres votes. Ainsi, un vote pour un candidat 0
est plus différent des autres votes qu'un vote pour un candidat 1
. En comparaison, le facteur C pour un 1
vote de candidat est de , il est donc moins controversé car il ressemble davantage aux autres votes.
Le défi
Écrivez une fonction pour déterminer le facteur C d'un vote o
compte tenu des résultats d'un vote v
.
o
doit être un entier,0
ou1
.v
doit être un tableau (ou un type de conteneur similaire selon les spécifications de la langue) de longueur arbitraire contenant des zéros et des uns.La fonction doit renvoyer ou imprimer à la console le facteur C résultant en fonction des paramètres de la fonction, en utilisant la formule ci-dessus ou une méthode modifiée.
Bonne chance! Le moins d'octets l'emporte (gagnant choisi en cinq jours).
mean(v)
égal à 0,7 dans votre exemple?abs(0 - 0.7)
égal à0.3
?Réponses:
Gelée , 3 octets
Essayez-le en ligne!
Littéralement juste "différence absolue pour signifier".
Si vous inversez les arguments, vous pouvez inverser les atomes.
la source
R , 23 octets
Essayez-le en ligne!
Le défi se résume à calculer la proportion de valeurs
v
différentes deo
(iemean(xor(o,v))
). On peut donc éviter d'utiliserabs
.la source
APL (Dyalog Unicode) ,
9 85 octetsEssayez-le en ligne!
Train anonyme. Merci à @ Adám pour un octet enregistré et merci à @ngn pour 3 octets!
Comment:
la source
En fait , 3 octets
Essayez-le en ligne!
Explication:
la source
05AB1E , 3 octets
Essayez-le en ligne!
la source
α
puisÅA
, p0
/1
, votre approche consistant à obtenir d'abord la moyenne puis la différence absolue est correcte lorsque nous la comparons à la formule dans la description du défi. Avec seulement 0s / 1s, quelques 3 octets alternatifs sont également possibles, commeÊÅA
.Octave , 16 octets
Essayez-le en ligne!
la source
Attaché ,
118 octetsEssayez-le en ligne! Prend les arguments comme
f[o, v]
.Rien de terriblement original.
Approches alternatives
11 octets:
Average@`/=
11 octets:
${1-x~y/#y}
compte les occurrences dex
dansy
divisé par la longueur dey
, puis soustrait celle de1
.11 octets:
{1-_2~_/#_}
(Les arguments sont inversés pour celui-ci)15 octets:
${Sum[x/=y]/#y}
une version plus explicite de ce qui précède, sansAverage
.la source
JavaScript, 38 octets
Essayez-le
la source
Proton , 26 octets
Essayez-le en ligne!
La sortie est une fraction car Proton utilise sympy au lieu des nombres Python réguliers pour une meilleure précision.
(-7 octets; abs-diff signifie plus court que la moyenne de abs-diff; je suis en fait stupide)
-1 octet grâce à Rod
la source
Perl 6 , 20 octets
Essayez-le en ligne!
* X!= *
est une fonction anonyme qui prend le produit croisé non égal de ses deux arguments. Il produit une séquence de booléens; par exemple,1 X!= (1, 0, 1)
évalue à(False, True, False)
.{ @_.sum / @_ }
est une autre fonction anonyme qui renvoie la moyenne de ses arguments. BooleanTrue
évalue à1
numériquement etFalse
à0
.L'
o
opérateur compose ces deux fonctions en une seule.la source
Inscrire , 3 octets
Essayez-le en ligne!
Le langage est très fortement inspiré par Jelly au point que c'est probablement plus comme moi d'expérimenter pour essayer de recréer la structure de la façon dont Jelly est analysée avec mon propre code.
-1 octet merci à M. Xcoder
la source
n
au lieu de_...A
pour enregistrer 1 ( Essayez-le en ligne! ).Retina 0.8.2 , 27 octets
Essayez-le en ligne! Produit une fraction. Explication: Le premier groupe capture
o
et le deuxième groupe capture chaque entrée dev
, tandis que le conditionnel garantit que le troisième groupe ne fait une capture que lorsque le vote est différent. La$#
construction renvoie ensuite le nombre de captures pertinentes comme souhaité.la source
Perl 5
-MList::Util=sum
, 30 octetsEssayez-le en ligne!
la source
K (Kona) , 17 octets
Essayez-le en ligne!
la source
Orme 0,19, 48 octets
Démo en ligne ici .
la source
C (gcc) , 62 octets
Essayez-le en ligne!
Appelez le
f(int o, int *v, int length_of_v)
.la source
Japt v2.0a0, 6 octets
Essayez-le
la source
JavaScript (Node.js) ,
4742 octets-5 octets de @arnauld
Essayez-le en ligne!
la source
Java 8, 47 octets
Essayez-le en ligne.
Ou bien:
Essayez-le en ligne.
Pour les deux, les entrées sont un
Supplier<DoubleStream>
pour la liste des votesv
etdouble
pour le voteo
.Explication:
la source
Lisp commun 49 octets
Solution:
Essayez-le en ligne
Explication:
la source
Rubis , 31 octets
Essayez-le en ligne!
la source
Pyth, 4 octets
Explication:
L'entrée est au format:
avec la gamme de votes en premier, et le candidat en second.
Essayez-le en ligne!
la source