Compte tenu de la liste des populations de chaque État, affichez, du plus grand au moins, le nombre de votes que cet État obtient au collège électoral.
Entrée: le premier chiffre représente le nombre total de votes à distribuer; il est suivi d'une liste de et de populations. Dans cet exemple, les abréviations des états sont utilisées, mais tout nom contenant des lettres majuscules et minuscules peut être utilisé. Vous pouvez le prendre dans le format de votre choix, tant que la seule information contenue est l'abréviation de l'État et sa population.
L'entrée peut être considérée comme un argument pour une fonction, ou comme vous le souhaitez.
Exemple d'entrée (possible): 538 [[CA 38000000], [NH 1300000] etc.]
Sortie: affiche, dans un certain format, le nombre de votes que chaque État obtient. Ordonnez les États du plus grand au moins. Si deux États ont le même nombre de votes, l'ordre par n'importe quel nom apparaîtra en premier dans un dictionnaire (qui apparaît en premier par ordre alphabétique).
Avant de trouver le nombre de votes, vérifiez d'abord s'il y a un état nommé DC dans la liste des entrées, et s'il y en a, donnez à l'État 3 votes, quelle que soit sa population. Ensuite, supprimez-le de la liste et attribuez le reste des votes comme si DC n'existait pas.
Le nombre de voix au collège électoral est défini comme la somme du nombre de sénateurs et de représentants. Chaque État a deux sénateurs, alors soustrayez le double du nombre d'États (538, dans l'exemple d'entrée) pour obtenir le nombre de représentants. Attribuez à chaque État un représentant pour commencer. Ensuite, effectuez le processus suivant:
Attribuez à chaque état un nombre,
A
défini comme étantP/sqrt(2)
où seP
trouve la population.Trier les états en fonction de leurs valeurs de
A
.Attribuez le premier état (celui avec le plus grand
A
) un représentant de plus.Réaffectez les valeurs de
A
, asA = P/(sqrt(n)*sqrt(n + 1))
, oùn
est le nombre actuel de représentants affectés à l'État.Revenez à l'étape 2. Répétez jusqu'à ce que tous les représentants soient épuisés.
Exemple (possible) sortie: {CA: 518, NH: 20}
. La sortie ne doit pas nécessairement être dans ce format, mais doit contenir les mêmes informations.
Notez que s'il n'est pas possible d'attribuer des votes légalement parce qu'il y a moins de 3*(# of states)
votes, imprimez ce que vous voulez. Vous pouvez planter, lancer une erreur, etc.
Cas de test:
538 [['CA' 38000000], ['NH' 1300000]] --> CA: 518, NH: 20
538 [['NH' 1300000], ['CA' 38000000]] --> CA: 518, NH: 20 (must be in order from greatest to least!)
538 [['DC' 1000000], ['RH' 1]] --> RH: 535, DC: 3
100 [['A', 12], ['B', 8], ['C', 3]] --> A: 51, B: 35, C: 14
100 [['A', 12], ['B', 8], ['C', 3], ['D', 0]]: --> [49, 34, 14, 3] (yes, even states with no population get votes)
2 [['A', 1]] --> aasdfksjd;gjhkasldfj2fkdhgas (possible output)
12 [['A', 1], ['B', 2], ['C', 3], ['D', 4]] --> A: 3, B: 3, C: 3, D: 3
42 [['K', 123], ['L', 456], ['M', 789]] --> M: 23, L: 14, K: 5
420 [['K', 123], ['L', 456], ['M', 789]] --> M: 241, L: 140, K: 39
135 [['C', 236841], ['D', 55540], ['G', 70835], ['K', 68705], ['M', 278514], ['Ms', 475327], ['Nh', 141822], ['Nj', 179570], ['Ny', 331589], ['Nc', 353523], ['P', 432879], ['R', 68446], ['Sc', 206236], ['Ve', 85533], ['Vi', 630560]] --> Vi: 20, Ms: 16, P: 14, Nc: 12, Ny: 12, M: 10, C: 9, Sc: 8, Nj: 7, Nh: 6, Ve: 5, D: 4, G: 4, K: 4, R: 4
A
, commeA = P/(sqrt(n)*sqrt(n + 1))
, oùn
est le nombre actuel de membres affectés à l'état". devrait être remplacé par "Réaffecter les valeurs deA
, commeA = P/(sqrt(n)*sqrt(n + 1))
, oùn
est le nombre actuel de représentants affectés à l'État.". Cela m'a bouleversé.Réponses:
Propre ,
263244222 octetsAppelez comme
Version non golfée, programme complet (
census.icl
):la source
JavaScript ES6,
249 octets244 octetsCas de test
Merci à @Neil pour avoir économisé 5 octets!
la source
.some((t,i)=>t.a=t.p/q(++t.r)/q(t.r+1))
vous ferait économiser un octet si cela fonctionne.r
est incrémenté à chaque fois..some
et non.map
.i
plus. Agréable!Python 2, 219 octets
Prend l'entrée comme
Tirages:
la source