introduzione
Data una serie di percentuali di scelte in un sondaggio, calcola il numero minimo di elettori che devono esserci nel sondaggio per generare tali statistiche.
Esempio: qual è il tuo animale preferito?
- Cane:
44.4%
- Gatto:
44.4%
- Topo:
11.1%
Produzione: 9
(numero minimo possibile di elettori)
Specifiche
Ecco i requisiti per il tuo programma / funzione:
- Viene fornito un array di valori percentuali come input (su stdin, come argomento di funzione, ecc.)
- Ogni valore percentuale è un numero arrotondato al primo decimale (ad esempio,
44.4 44.4 11.1
). - Calcola il numero minimo possibile di elettori nel sondaggio i cui risultati darebbero quelle percentuali esatte se arrotondato al primo decimale (su stdout o valore di ritorno della funzione).
- Bonus : -15 caratteri se riesci a risolverli in modo "non banale" (ovvero, non comporta l'iterazione attraverso ogni possibile numero di elettori fino a quando non trovi il primo che funziona)
Esempio
>./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
punteggio
Si tratta di code-golf, quindi i personaggi più corti possibili vincono. Eventuali bonus vengono ulteriormente sottratti dal conteggio totale dei personaggi.
0.5%
totale, e ogni volta che c'è un arrotondamento per eccesso, sommi 0.5%
al totale. Gli ultimi quattro casi di test sono stati appositamente costruiti per sfruttare in modo ottimale questo fenomeno. Nel primo caso di test che ne risulta 2000
, ciascuna delle prime 9 voci rappresenta il 1
voto (e sono tutte arrotondate per eccesso 0.5%
), mentre l'ultima rappresenta i 1991
voti (ed è arrotondata per difetto ~ 0.5%
). Se calcoli queste percentuali manualmente e arrotondiamo al primo decimale, vedrai che sono tutte corrette.
26.7 53.3 20.0
(4 8 3 di 15),48.4 13.7 21.6 6.5 9.8
(74 21 33 10 15 di 153) ecc.