In dieser Herausforderung bestimmen Sie, wie kontrovers eine Abstimmung bei einer Reihe anderer Stimmen ist, indem Sie eine Zahl ermitteln, die als C-Faktor bezeichnet wird. Was ist der C-Faktor?
Stellen Sie sich vor, Sie haben mehrere Stimmen bei einer Wahl. Wir werden 1
und 0
um der Herausforderung willen zwei verschiedene Kandidaten bei einer Wahl vertreten. Hier sind die zehn Stimmen bei unserer Beispielwahl:
0110111011
Angenommen, wir möchten den C-Faktor jeder Abstimmung für einen Kandidaten ermitteln 0
. Wir können das mit der folgenden Funktion tun:
In , ist die Abstimmung , die wir den C-Faktor für und bestimmen , wollen eine Reihe von Stimmen. Verwenden Sie also unsere Funktion, um den C-Faktor jeder Abstimmung für einen Kandidaten zu erhalten :o
v
0
Ein niedrigerer C-Faktor zeigt, dass die Abstimmung im Vergleich zu den anderen Stimmen weniger kontrovers war. Eine Abstimmung für einen Kandidaten unterscheidet sich 0
also stärker von den anderen Stimmen als eine Abstimmung für einen Kandidaten 1
. Im Vergleich dazu 1
beträgt der C-Faktor für eine Kandidatenstimme , daher ist er weniger kontrovers, da er eher den anderen Stimmen ähnelt.
Die Herausforderung
Schreiben Sie eine Funktion , um den C-Faktor einer Abstimmung bei gegebenen Abstimmungsergebnissen zu bestimmen .o
v
o
muss eine ganze Zahl sein, entweder0
oder1
.v
muss ein Array (oder ein ähnlicher Containertyp, abhängig von den Sprachspezifikationen) beliebiger Länge sein, das Nullen und Einsen enthält.Die Funktion sollte den resultierenden C-Faktor unter Berücksichtigung der Funktionsparameter unter Verwendung der obigen Formel oder einer modifizierten Methode zurückgeben oder an die Konsole drucken.
Viel Glück! Das kleinste Byte gewinnt (Gewinner in fünf Tagen ausgewählt).
mean(v)
in Ihrem Beispiel nicht gleich 0,7?abs(0 - 0.7)
gleich0.3
?Antworten:
Gelee , 3 Bytes
Probieren Sie es online aus!
Wörtlich nur "absoluter Unterschied zu bedeuten".
Wenn Sie die Argumente invertieren, können Sie die Atome invertieren.
quelle
R , 23 Bytes
Probieren Sie es online aus!
Die Herausforderung besteht darin, den Anteil der Werte zu berechnen, die sich
v
vono
(dhmean(xor(o,v))
) unterscheiden. Wir können daher die Verwendung vermeidenabs
.quelle
APL (Dyalog Unicode) ,
9 85 BytesProbieren Sie es online aus!
Anonymer Zug. Danke an @ Adám für ein gespeichertes Byte und danke an @ngn für 3 Bytes!
Wie:
quelle
Eigentlich 3 Bytes
Probieren Sie es online aus!
Erläuterung:
quelle
05AB1E , 3 Bytes
Probieren Sie es online aus!
quelle
α
dannÅA
, p0
/ noch etwas anderes enthalten könnte1
, ist Ihr Ansatz, zuerst den Mittelwert und dann den absoluten Unterschied zu ermitteln, korrekt, wenn wir ihn mit der Formel in der Herausforderungsbeschreibung vergleichen. Mit nur 0s / 1s sind auch einige alternative 3-Byter möglich, wie zÊÅA
.Oktave , 16 Bytes
Probieren Sie es online aus!
quelle
Attache ,
118 BytesProbieren Sie es online aus! Nimmt Argumente als
f[o, v]
.Nichts schrecklich Originelles.
Alternative Ansätze
11 Bytes:
Average@`/=
11 Bytes:
${1-x~y/#y}
Zählt die Vorkommen vonx
iny
geteilt durch die Länge vony
und subtrahiert diese dann von1
.11 Bytes:
{1-_2~_/#_}
(Argumente für dieses sind umgekehrt)15 Bytes:
${Sum[x/=y]/#y}
Eine explizitere Version des oben genannten, ohneAverage
.quelle
JavaScript, 38 Bytes
Versuch es
quelle
Proton , 26 Bytes
Probieren Sie es online aus!
Die Ausgabe ist ein Bruchteil, da Proton zur besseren Genauigkeit Sympy anstelle regulärer Python-Zahlen verwendet.
(-7 Bytes; abs-diff zu bedeuten ist kürzer als der Mittelwert von abs-diff; ich bin eigentlich dumm)
-1 Byte dank Rod
quelle
Perl 6 , 20 Bytes
Probieren Sie es online aus!
* X!= *
ist eine anonyme Funktion, die das ungleiche Kreuzprodukt ihrer beiden Argumente verwendet. Es erzeugt eine Folge von Booleschen Werten; zum Beispiel1 X!= (1, 0, 1)
bewertet zu(False, True, False)
.{ @_.sum / @_ }
ist eine weitere anonyme Funktion, die den Durchschnitt ihrer Argumente zurückgibt. BooleanTrue
wertet zu1
numerisch undFalse
zu aus0
.Der
o
Bediener fasst diese beiden Funktionen zu einer zusammen.quelle
Tragen Sie 3 Bytes ein
Probieren Sie es online aus!
Die Sprache ist sehr stark von Jelly inspiriert, so dass es wahrscheinlich eher so ist, als würde ich experimentieren, um zu versuchen, die Struktur wiederherzustellen, wie Jelly mit meinem eigenen Code analysiert wird.
-1 Byte danke an Mr. Xcoder
quelle
n
anstatt_...A
1 zu speichern ( Online ausprobieren! ).Retina 0,8,2 , 27 Bytes
Probieren Sie es online aus! Gibt einen Bruchteil aus. Erläuterung: Die erste Gruppe erfasst
o
und die zweite Gruppe erfasst jeden Eintrag vonv
, während die Bedingung sicherstellt, dass die dritte Gruppe nur dann eine Erfassung vornimmt, wenn die Abstimmung unterschiedlich ist. Die$#
Konstruktion gibt dann die Anzahl der relevanten Erfassungen wie gewünscht zurück.quelle
Perl 5
-MList::Util=sum
, 30 BytesProbieren Sie es online aus!
quelle
K (Kona) , 17 Bytes
Probieren Sie es online aus!
quelle
Ulme 0,19, 48 Bytes
Online-Demo hier .
quelle
C (gcc) , 62 Bytes
Probieren Sie es online aus!
Rufen Sie an als
f(int o, int *v, int length_of_v)
.quelle
Japt v2.0a0, 6 Bytes
Versuch es
quelle
JavaScript (Node.js) ,
4742 Byte-5 Bytes von @arnauld
Probieren Sie es online aus!
quelle
Java 8, 47 Bytes
Probieren Sie es online aus.
oder alternativ:
Probieren Sie es online aus.
Für beide sind die Eingaben a
Supplier<DoubleStream>
für die Liste der Stimmenv
unddouble
für die Abstimmungo
.Erläuterung:
quelle
Common Lisp 49 Bytes
Lösung:
Probieren Sie es online aus
Erläuterung:
quelle
Ruby , 31 Bytes
Probieren Sie es online aus!
quelle
Pyth, 4 Bytes
Erläuterung:
Die Eingabe hat das Format:
mit der Reihe der Stimmen zuerst und dem Kandidaten zweitens.
Probieren Sie es online aus!
quelle