En este desafío, determinará qué tan controvertido es un voto, dada una serie de otros votos, al descubrir un número llamado factor C. ¿Cuál es el factor C, preguntas?
Bueno, imagina que tienes varios votos en una elección. Usaremos 1
y 0
por el bien del desafío representar a dos candidatos diferentes en una elección. Aquí están los diez votos en nuestra elección de muestra:
0110111011
Ahora, digamos que queremos encontrar el factor C de cualquier voto por candidato 0
. Podemos hacer eso con la siguiente función:
En , es el voto para el que queremos determinar el factor C, y es un conjunto de votos. Entonces, usando nuestra función, para obtener el factor C de cualquier voto por candidato :o
v
0
Un factor C más bajo muestra que el voto fue menos controvertido en comparación con los otros votos. Entonces, un voto por candidato 0
es más diferente de los otros votos que un voto por candidato 1
. En comparación, el factor C para un 1
voto de candidato es , por lo que es menos controvertido porque se parece más a los otros votos.
El reto
Escriba una función para determinar el factor C de un voto dados los resultados de un voto .o
v
o
debe ser un número entero, ya sea0
o1
.v
debe ser una matriz (o un tipo de contenedor similar según las especificaciones del idioma) de longitud arbitraria que contenga ceros y unos.La función debe devolver o imprimir en la consola el factor C resultante dados los parámetros de la función, utilizando la fórmula anterior o un método modificado.
¡Buena suerte! El menor número de bytes gana (ganador elegido en cinco días).
mean(v)
igual a 0.7 en su ejemplo?abs(0 - 0.7)
igual a0.3
?Respuestas:
Jalea , 3 bytes
Pruébalo en línea!
Literalmente solo "diferencia absoluta para significar".
Si inviertes los argumentos, puedes invertir los átomos.
fuente
R , 23 bytes
Pruébalo en línea!
El desafío se reduce a calcular la proporción de valores en
v
diferentes deo
(es decir,mean(xor(o,v))
). Por lo tanto, podemos evitar el usoabs
.fuente
APL (Dyalog Unicode) ,
9 85 bytesPruébalo en línea!
Tren anónimo ¡Gracias a @ Adám por un byte guardado, y gracias a @ngn por 3 bytes!
Cómo:
fuente
En realidad , 3 bytes
Pruébalo en línea!
Explicación:
fuente
05AB1E , 3 bytes
Pruébalo en línea!
fuente
α
a continuaciónÅA
, p0
/1
, su enfoque de obtener primero la media y luego la diferencia absoluta es correcta cuando la comparamos con la fórmula en la descripción del desafío. Con solo 0s / 1s, también son posibles algunas alternativas de 3 bytesÊÅA
.Octava , 16 bytes
Pruébalo en línea!
fuente
Adjunto ,
118 bytesPruébalo en línea! Toma argumentos como
f[o, v]
.Nada terriblemente original.
Aproximaciones alternativas
11 bytes:
Average@`/=
11 bytes:
${1-x~y/#y}
cuenta las ocurrencias dex
iny
dividido por la longitud dey
, luego resta de1
.11 bytes:
{1-_2~_/#_}
(Los argumentos se invierten para este)15 bytes:
${Sum[x/=y]/#y}
una versión más explícita de lo anterior, sinAverage
.fuente
JavaScript, 38 bytes
Intentalo
fuente
Protón , 26 bytes
Pruébalo en línea!
El resultado es una fracción porque Proton usa números sympy en lugar de Python regulares para una mejor precisión.
(-7 bytes; abs-diff a mean es más corto que la media de abs-diff; en realidad soy tonto)
-1 byte gracias a Rod
fuente
Perl 6 , 20 bytes
Pruébalo en línea!
* X!= *
es una función anónima que toma el producto cruzado no igual de sus dos argumentos. Produce una secuencia de booleanos; por ejemplo,1 X!= (1, 0, 1)
evalúa a(False, True, False)
.{ @_.sum / @_ }
es otra función anónima que devuelve el promedio de sus argumentos. BooleanTrue
evalúa1
numéricamente yFalse
a0
.El
o
operador compone esas dos funciones en una.fuente
Aliste , 3 bytes
Pruébalo en línea!
El lenguaje está muy inspirado por Jelly hasta el punto de que probablemente sea más como si yo estuviera experimentando para tratar de recrear la estructura de cómo Jelly se analiza con mi propio código.
-1 byte gracias al Sr. Xcoder
fuente
n
lugar de_...A
guardar 1 (¡ Pruébelo en línea! ).Retina 0.8.2 , 27 bytes
Pruébalo en línea! Produce una fracción. Explicación: El primer grupo captura
o
y el segundo grupo captura cada entrada dev
, mientras que el condicional garantiza que el tercer grupo solo realice una captura cuando el voto es diferente. La$#
construcción devuelve el recuento de las capturas relevantes según lo deseado.fuente
Perl 5
-MList::Util=sum
, 30 bytesPruébalo en línea!
fuente
K (Kona) , 17 bytes
Pruébalo en línea!
fuente
Elm 0.19, 48 bytes
Demostración en línea aquí .
fuente
C (gcc) , 62 bytes
Pruébalo en línea!
Llamar como
f(int o, int *v, int length_of_v)
.fuente
Japt v2.0a0, 6 bytes
Intentalo
fuente
JavaScript (Node.js) ,
4742 bytes-5 bytes de @arnauld
Pruébalo en línea!
fuente
Java 8, 47 bytes
Pruébalo en línea.
o alternativamente:
Pruébalo en línea.
Para ambas, las entradas son
Supplier<DoubleStream>
para la lista de votosv
ydouble
para la votacióno
.Explicación:
fuente
Lisp común 49 bytes
Solución:
Pruébalo en línea
Explicación:
fuente
Ruby , 31 bytes
Pruébalo en línea!
fuente
Pyth, 4 bytes
Explicación:
La entrada tiene el formato de:
con el conjunto de votos primero, y el candidato segundo.
Pruébalo en línea!
fuente