Einführung
Berechnen Sie bei einer Reihe von Prozentsätzen für die Auswahlmöglichkeiten in einer Umfrage die Mindestanzahl der Wähler, die in der Umfrage enthalten sein müssen, um diese Statistiken zu erstellen.
Beispiel: Welches ist Ihr Lieblingshaustier?
- Hund:
44.4%
- Katze:
44.4%
- Maus:
11.1%
Output: 9
(minimal mögliche Anzahl von Wählern)
Technische Daten
Hier sind die Anforderungen für Ihr Programm / Ihre Funktion:
- Sie erhalten ein Array mit Prozentwerten als Eingabe (für stdin, als Funktionsargument usw.).
- Jeder Prozentwert ist eine auf eine Dezimalstelle gerundete Zahl (z
44.4 44.4 11.1
. B. ). - Berechnen Sie die kleinstmögliche Anzahl von Wählern in der Umfrage, deren Ergebnisse genau diese Prozentsätze ergeben würden, wenn sie auf eine Dezimalstelle gerundet würden (auf Standard- oder Funktionsrückgabewert).
- Bonus : -15 Zeichen, wenn Sie auf "nicht triviale" Weise lösen können (dh Sie müssen nicht jede mögliche Anzahl von Wählern durchlaufen, bis Sie die erste finden, die funktioniert)
Beispiel
>./pollreverse 44.4 44.4 11.1
9
>./pollreverse 26.7 53.3 20.0
15
>./pollreverse 48.4 13.7 21.6 6.5 9.8
153
>./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 99.6
2000
>./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 98.7
667
>./pollreverse 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 98.7
2000
>./pollreverse 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 97.8
401
Wertung
Das ist Code-Golf, also gewinnt der kürzestmögliche Charakter. Etwaige Boni werden von der Gesamtzahl der Zeichen weiter abgezogen.
0.5%
Gesamtsumme und bei jeder Aufrundung addieren Sie 0.5%
zur Gesamtsumme. Die letzten vier Testfälle wurden gezielt konstruiert, um dieses Phänomen optimal auszunutzen. In dem ersten Testfall, der zu führt 2000
, repräsentiert jeder der ersten 9 Einträge eine 1
Abstimmung (und sind alle aufgerundet 0.5%
), während der letzte eine 1991
Abstimmung repräsentiert (und abgerundet ist ~ 0.5%
). Wenn Sie diese Prozentsätze manuell berechnen und auf 1 Dezimalstelle runden, werden Sie sehen, dass alle korrekt sind.
26.7 53.3 20.0
(4 8 3 von 15),48.4 13.7 21.6 6.5 9.8
(74 21 33 10 15 von 153) usw.