Nesse desafio, você determinará o quão controverso é um voto, considerando uma série de outros votos, calculando um número chamado fator C. Qual é o fator C, você pergunta?
Bem, imagine que você tenha vários votos em uma eleição. Usaremos 1
e, 0
para o bem do desafio, representar dois candidatos diferentes em uma eleição. Aqui estão os dez votos em nossa amostra de eleição:
0110111011
Agora, digamos que queremos encontrar o fator C de qualquer voto para candidato 0
. Podemos fazer isso com a seguinte função:
Em , é a votação para a qual queremos determinar o fator C e é uma matriz de votos. Portanto, usando nossa função, para obter o fator C de qualquer voto para candidato :o
v
0
Um fator C mais baixo mostra que a votação foi menos controversa em comparação com os outros votos. Portanto, um voto para candidato 0
é mais diferente dos outros votos que um voto para candidato 1
. Em comparação, o fator C para uma 1
votação de candidato é , portanto é menos controverso porque é mais parecido com os outros votos.
O desafio
Escreva uma função para determinar o fator C de uma votação, dados os resultados de uma votação .o
v
o
deve ser um número inteiro,0
ou1
.v
deve ser uma matriz (ou tipo de contêiner semelhante, dependendo das especificações de idioma) de comprimento arbitrário contendo zeros e uns.A função deve retornar ou imprimir no console o fator C resultante, dados os parâmetros da função, usando a fórmula acima ou um método modificado.
Boa sorte! O mínimo de bytes ganha (vencedor escolhido em cinco dias).
mean(v)
igual a 0,7 no seu exemplo?abs(0 - 0.7)
igual a0.3
?Respostas:
Gelatina , 3 bytes
Experimente online!
Literalmente apenas "diferença absoluta para significar".
Se você inverter os argumentos, poderá inverter os átomos.
fonte
R , 23 bytes
Experimente online!
O desafio se resume a calcular a proporção de valores em
v
diferente deo
(iemean(xor(o,v))
). Portanto, podemos evitar o usoabs
.fonte
APL (Dyalog Unicode) ,
9 85 bytesExperimente online!
Trem anônimo. Obrigado a @ Adám por um byte salvo e obrigado a @ngn por 3 bytes!
Quão:
fonte
Na verdade , 3 bytes
Experimente online!
Explicação:
fonte
05AB1E , 3 bytes
Experimente online!
fonte
α
, em seguidaÅA
; p0
/1
, sua abordagem de obter a média primeiro e, em seguida, a diferença absoluta estará correta quando a compararmos com a fórmula na descrição do desafio. Com apenas 0s / 1s, alguns 3-byters alternativos também são possíveis, comoÊÅA
.Oitava , 16 bytes
Experimente online!
fonte
Anexo ,
118 bytesExperimente online! Aceita argumentos como
f[o, v]
.Nada terrivelmente original.
Abordagens alternativas
11 bytes:
Average@`/=
11 bytes:
${1-x~y/#y}
conta as ocorrências dex
iny
dividido pelo comprimento dey
e subtrai isso de1
.11 bytes:
{1-_2~_/#_}
(os argumentos são revertidos para este)15 bytes:
${Sum[x/=y]/#y}
uma versão mais explícita do anterior, semAverage
.fonte
JavaScript, 38 bytes
Tente
fonte
Próton , 26 bytes
Experimente online!
A saída é uma fração porque o Proton usa números sympy em vez de números regulares do Python para melhor precisão.
(-7 bytes; abs-diff significa menos que a média de abs-diff; na verdade, sou burro)
-1 byte graças a Rod
fonte
Perl 6 , 20 bytes
Experimente online!
* X!= *
é uma função anônima que pega o produto cruzado não-igual de seus dois argumentos. Produz uma sequência de booleanos; por exemplo,1 X!= (1, 0, 1)
avalia como(False, True, False)
.{ @_.sum / @_ }
é outra função anônima que retorna a média de seus argumentos. BooleanoTrue
avalia para1
numericamente eFalse
para0
.O
o
operador compõe essas duas funções em uma.fonte
Alistar , 3 bytes
Experimente online!
A linguagem é fortemente inspirada por Jelly, a tal ponto que provavelmente é mais como eu experimentando tentar recriar a estrutura de como Jelly é analisada com meu próprio código.
-1 byte graças ao Sr. Xcoder
fonte
n
vez de_...A
salvar 1 ( Experimente online! ).Retina 0.8.2 , 27 bytes
Experimente online! Produz uma fração. Explicação: O primeiro grupo captura
o
e o segundo grupo captura cada entrada dev
, enquanto o condicional garante que o terceiro grupo faça uma captura apenas quando a votação for diferente. A$#
construção retorna a contagem das capturas relevantes, conforme desejado.fonte
Perl 5
-MList::Util=sum
, 30 bytesExperimente online!
fonte
K (Kona) , 17 bytes
Experimente online!
fonte
Olmo 0,19, 48 bytes
Demonstração online aqui .
fonte
C (gcc) , 62 bytes
Experimente online!
Ligar como
f(int o, int *v, int length_of_v)
.fonte
Japt v2.0a0, 6 bytes
Tente
fonte
JavaScript (Node.js) ,
4742 bytes-5 bytes de @arnauld
Experimente online!
fonte
Java 8, 47 bytes
Experimente online.
ou alternativamente:
Experimente online.
Para ambas as entradas, são indicados
Supplier<DoubleStream>
para a lista de votosv
edouble
para a votaçãoo
.Explicação:
fonte
Lisp comum 49 bytes
Solução:
Experimente online
Explicação:
fonte
Ruby , 31 bytes
Experimente online!
fonte
Pitão, 4 bytes
Explicação:
A entrada está no formato de:
com a série de votos primeiro e o candidato em segundo.
Experimente online!
fonte