W tym wyzwaniu będziesz określać, jak kontrowersyjny jest głos, biorąc pod uwagę szereg innych głosów, ustalając liczbę zwaną współczynnikiem C. Jaki jest współczynnik C, pytasz?
Wyobraź sobie, że masz wiele głosów w wyborach. Wykorzystamy 1
i 0
ze względu na wyzwanie reprezentujemy dwóch różnych kandydatów w wyborach. Oto dziesięć głosów w naszych przykładowych wyborach:
0110111011
Powiedzmy, że chcemy znaleźć współczynnik C każdego głosowania na kandydata 0
. Możemy to zrobić za pomocą następującej funkcji:
W , jest głosowanie chcemy określić C-czynnik, a jest tablicą głosów. Tak więc, korzystając z naszej funkcji, aby uzyskać współczynnik C każdego głosowania na kandydata :o
v
0
Niższy współczynnik C pokazuje, że głosowanie było mniej kontrowersyjne w porównaniu z innymi głosami. Tak więc głos na kandydata 0
różni się bardziej od innych głosów niż głos na kandydata 1
. Dla porównania współczynnik C dla 1
głosu kandydata wynosi , więc jest mniej kontrowersyjny, ponieważ bardziej przypomina inne głosy.
Wyzwanie
Napisz funkcję aby określić współczynnik C głosowania na podstawie wyników głosowania .o
v
o
musi być liczbą całkowitą albo0
czy1
.v
musi być tablicą (lub podobnym typem kontenera w zależności od specyfikacji języka) o dowolnej długości zawierającej zera i jedynki.Funkcja powinna zwrócić lub wydrukować na konsoli wynikowy współczynnik C, biorąc pod uwagę parametry funkcji, przy użyciu powyższego wzoru lub zmodyfikowanej metody.
Powodzenia! Wygrywa najmniej bajtów (zwycięzca wybrany za pięć dni).
mean(v)
w twoim przykładzie nie jest równe 0,7?abs(0 - 0.7)
równe0.3
?Odpowiedzi:
Galaretka , 3 bajty
Wypróbuj online!
Dosłownie „absolutna różnica oznacza”.
Jeśli odwrócisz argumenty, możesz odwrócić atomy.
źródło
R , 23 bajty
Wypróbuj online!
Wyzwanie sprowadza się do obliczenia proporcji wartości
v
innych niżo
(tjmean(xor(o,v))
.). Dlatego możemy uniknąć używaniaabs
.źródło
APL (Dyalog Unicode) ,
9 85 bajtówWypróbuj online!
Anonimowy pociąg. Dzięki @ Adám za zapisany bajt i dzięki @ngn za 3 bajty!
W jaki sposób:
źródło
Właściwie 3 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
05AB1E , 3 bajty
Wypróbuj online!
źródło
α
wtedyÅA
; p0
/1
, twoje podejście do uzyskania średniej, a następnie bezwzględnej różnicy jest prawidłowe, gdy porównamy ją ze wzorem w opisie wyzwania. Przy tylko 0 s / 1 s możliwe są również alternatywne 3-bajtoweÊÅA
.Oktawa , 16 bajtów
Wypróbuj online!
źródło
Attache ,
118 bajtówWypróbuj online! Traktuje argumenty jako
f[o, v]
.Nic strasznie oryginalnego.
Alternatywne podejścia
11 bajtów:
Average@`/=
11 bajtów:
${1-x~y/#y}
Zlicza wystąpieniax
wy
podzielone przez długośćy
, a następnie odejmuje to od1
.11 bajtów:
{1-_2~_/#_}
(Argumenty są odwrócone w tym przypadku)15 bajtów:
${Sum[x/=y]/#y}
Bardziej wyraźna wersja powyższego, bezAverage
.źródło
JavaScript, 38 bajtów
Spróbuj
źródło
Proton , 26 bajtów
Wypróbuj online!
Wynik jest ułamkiem, ponieważ Proton używa sympii zamiast zwykłych liczb w Pythonie dla lepszej precyzji.
(-7 bajtów; abs-diff na średni jest krótszy niż średni abs-diff; właściwie jestem głupi)
-1 bajt dzięki Rod
źródło
Perl 6 , 20 bajtów
Wypróbuj online!
* X!= *
jest anonimową funkcją, która przyjmuje nierówny iloczyn krzyżowy dwóch argumentów. Tworzy sekwencję boolean; na przykład1 X!= (1, 0, 1)
ocenia na(False, True, False)
.{ @_.sum / @_ }
to kolejna anonimowa funkcja, która zwraca średnią swoich argumentów. BooleanTrue
Zwraca1
numerycznie, aFalse
do0
.o
Operatora tworzy te dwie funkcje w jednym.źródło
Zaciągnij , 3 bajty
Wypróbuj online!
Język jest bardzo mocno zainspirowany przez Jelly do tego stopnia, że prawdopodobnie bardziej przypomina mnie eksperymentowanie z próbą odtworzenia struktury sposobu, w jaki Jelly jest analizowany z moim własnym kodem.
-1 bajt dzięki Mr. Xcoder
źródło
n
zamiast_...A
zapisać 1 ( Wypróbuj online! ).Retina 0.8.2 , 27 bajtów
Wypróbuj online! Wyprowadza ułamek. Objaśnienie: Pierwsza grupa przechwytuje,
o
a druga grupa przechwytuje każdy wpisv
, podczas gdy warunek zapewnia, że trzecia grupa przechwytuje tylko wtedy, gdy głosowanie jest odmienne. Następnie$#
konstrukcja zwraca liczbę odpowiednich przechwyceń zgodnie z potrzebami.źródło
Perl 5
-MList::Util=sum
, 30 bajtówWypróbuj online!
źródło
K (Kona) , 17 bajtów
Wypróbuj online!
źródło
Wiąz 0,19, 48 bajtów
Demo online tutaj .
źródło
C (gcc) , 62 bajty
Wypróbuj online!
Jak zadzwonić
f(int o, int *v, int length_of_v)
.źródło
Japt v2.0a0, 6 bajtów
Spróbuj
źródło
JavaScript (Node.js) ,
4742 bajtów-5 bajtów z @arnauld
Wypróbuj online!
źródło
Java 8, 47 bajtów
Wypróbuj online.
lub alternatywnie:
Wypróbuj online.
Dla obu danych wejściowych znajduje się
Supplier<DoubleStream>
lista głosówv
idouble
głosowanieo
.Wyjaśnienie:
źródło
Wspólne Lisp 49 bajtów
Rozwiązanie:
Wypróbuj online
Wyjaśnienie:
źródło
Rubinowy , 31 bajtów
Wypróbuj online!
źródło
Pyth, 4 bajty
Wyjaśnienie:
Dane wejściowe mają format:
z tablicą głosów na pierwszym miejscu, a kandydatem na drugim miejscu.
Wypróbuj online!
źródło