From 9159d2a082dd14f001bf1c69b23ccdf2efb412cc Mon Sep 17 00:00:00 2001 From: philippe lhardy Date: Wed, 20 Aug 2025 16:36:09 +0200 Subject: [PATCH] fr -> en code --- code/jugement_majoritaire/__init__.py | 86 +++++++++++++-------------- code/parse_sample.php | 52 ++++++++-------- samples/1.json | 6 +- samples/2.json | 6 +- samples/3.json | 6 +- samples/4.json | 6 +- samples/5.json | 6 +- 7 files changed, 84 insertions(+), 84 deletions(-) diff --git a/code/jugement_majoritaire/__init__.py b/code/jugement_majoritaire/__init__.py index 37781ea..aa00fdd 100644 --- a/code/jugement_majoritaire/__init__.py +++ b/code/jugement_majoritaire/__init__.py @@ -4,31 +4,31 @@ from majority_judgment import majority_judgment verbose=False -def collect_votes(votes,candidats,default_mention,warnings): +def collect_votes(votes,candidates,default_mention,warnings): collect={} for vote in votes: - # missing candidat in vote picks the worse one - for candidat in candidats: - if not candidat in vote: - vote[candidat]=default_mention + # missing candidate in vote picks the worse one + for candidate in candidates: + if not candidate in vote: + vote[candidate]=default_mention - for candidat,mention in vote.items(): + for candidate,mention in vote.items(): if mention > default_mention or mention < 0: mention = default_mention warnings.append("index de mention invalide, soit la liste des mentions est erronnée soit la mention dans le vote est erronée") - if candidat in collect: - if mention in collect[candidat]: - collect[candidat][mention]=collect[candidat][mention]+1 + if candidate in collect: + if mention in collect[candidate]: + collect[candidate][mention]=collect[candidate][mention]+1 else: - collect[candidat][mention]=1 + collect[candidate][mention]=1 else: - collect[candidat]={mention:1} + collect[candidate]={mention:1} return collect -def arrange_votes_par_candidat(votes,candidats,default_mention): +def arrange_votes_by_candidate(votes,candidates,default_mention): vpc={} - for candidat in candidats: - vpc[candidat]=[vote[candidat] if candidat in vote else default_mention for vote in votes] + for candidate in candidates: + vpc[candidate]=[vote[candidate] if candidate in vote else default_mention for vote in votes] return vpc def jugement_majoritaire(poll): @@ -36,9 +36,9 @@ def jugement_majoritaire(poll): verbose=False crosscheck=True - votants=poll['votants']['decompte'] - candidats=poll['candidats'] - nombre_candidats=len(candidats) + voters=poll['voters']['count'] + candidates=poll['candidates'] + nombre_candidates=len(candidates) # l'ordre des mentions est de la meilleure à la pire (reject) nom_mentions=poll['mentions'] @@ -47,35 +47,35 @@ def jugement_majoritaire(poll): votes=poll["votation"]["votes"] if verbose: - print('candidats:' + str(candidats)) + print('candidates:' + str(candidates)) print(votes) warnings=[] - collect=collect_votes(votes,list(candidats),default_mention,warnings) + collect=collect_votes(votes,list(candidates),default_mention,warnings) if verbose: print(collect) - votant_median_check= votants / 2 if votants % 2 == 0 else ((votants-1) / 2) +1 + voter_median_check= voters / 2 if voters % 2 == 0 else ((voters-1) / 2) +1 - votant_median=votants // 2 + votants % 2 + voter_median=voters // 2 + voters % 2 - if votant_median_check != votant_median: - print('[ERROR] le nombre median de votants semble erroné. contactez le developpeur de ce code.' + str(votant_median_check)) + if voter_median_check != voter_median: + print('[ERROR] le nombre median de voters semble erroné. contactez le developpeur de ce code.' + str(voter_median_check)) - merite={} + merit={} mention_mediane={} - merite_pourcent={} + merit_pourcent={} - votes_par_candidat=arrange_votes_par_candidat(votes,candidats,mentions-1) + votes_by_candidate=arrange_votes_by_candidate(votes,candidates,mentions-1) # cumul : du meilleur au pire # range_mentions = range(len(mentions)) # cumul du pire au meilleur range_mentions = range(mentions-1,-1,-1) - for candidat in list(candidats): - vote=collect[candidat] + for candidate in list(candidates): + vote=collect[candidate] cumul=0 m=[0 for i in range(mentions)] mention_m=None @@ -83,26 +83,26 @@ def jugement_majoritaire(poll): for mention in range_mentions: if mention in vote: cumul=cumul+vote[mention] - pourcent[mention]= ( 100 * vote[mention] ) / votants - if cumul >= votant_median and mention_m is None: + pourcent[mention]= ( 100 * vote[mention] ) / voters + if cumul >= voter_median and mention_m is None: mention_m=mention m[mention]=cumul - if cumul < votants: - print('[ERROR] le cumul des votes doit correspondre au nombre de votants. contactez le developpeur de ce code.') - mention_mediane[candidat]=mention_m - merite[candidat]=m - merite_pourcent[candidat]=pourcent + if cumul < voters: + print('[ERROR] cumulated votes should match voters. Contact this code developer.') + mention_mediane[candidate]=mention_m + merit[candidate]=m + merit_pourcent[candidate]=pourcent if verbose: - print(merite) + print(merit) print(mention_mediane) # les gagnants sont ceux qui ont la mention mediane minimale ( la meilleure ) found=[] for mention in range(0,mentions): - for candidat,merite_median in mention_mediane.items(): - if merite_median == mention: - found.append({candidat:candidats[candidat]}) + for candidate,merit_median in mention_mediane.items(): + if merit_median == mention: + found.append({candidate:candidates[candidate]}) if len(found) > 0: break @@ -110,15 +110,15 @@ def jugement_majoritaire(poll): print(found) print(nom_mentions[mention]) - # expanded=expand_collect(collect,list(candidats),mentions) + # expanded=expand_collect(collect,list(candidates),mentions) if verbose: - print(votes_par_candidat) + print(votes_by_candidatee) - result = {'resultat':{'mention':nom_mentions[mention],'candidats':found},'merite':merite,'profil':merite_pourcent,"warnings":warnings} + result = {'result':{'mention':nom_mentions[mention],'candidates':found},'merit':merit,'profil':merit_pourcent,"warnings":warnings} if crosscheck: # cross check with a well known implementation - result["crosscheck"]=majority_judgment(votes_par_candidat, reverse=True) + result["crosscheck"]=majority_judgment(votes_by_candidate, reverse=True) return result diff --git a/code/parse_sample.php b/code/parse_sample.php index b91bc12..03f9d7d 100644 --- a/code/parse_sample.php +++ b/code/parse_sample.php @@ -21,9 +21,9 @@ if ($verbose) { var_dump($poll); } -$votants=$poll['votants']['decompte']; -$candidats=$poll['candidats']; -$nombre_candidats=count($candidats); +$voters=$poll['voters']['count']; +$candidates=$poll['candidates']; +$nombre_candidates=count($candidates); # l'ordre des mentions est de la meilleure à la pire (reject) $nom_mentions=$poll['mentions']; @@ -33,22 +33,22 @@ $default_mention=$mentions-1; $votes=$poll["votation"]["votes"]; if ($verbose) { - print("candidats\n"); - var_dump($candidats); + print("candidates\n"); + var_dump($candidates); print("votes:\n"); var_dump($votes); } $warnings=[]; $default_vote=[]; -foreach ($candidats as $candidat => $nom_candidat ) { +foreach ($candidates as $candidat => $nom_candidat ) { $default_vote[$candidat]=$default_mention; } $collect=[]; foreach ($votes as $vote) { # missing candidat in vote is the worts one - foreach ($candidats as $candidat => $nom_candidat ) { + foreach ($candidates as $candidat => $nom_candidat ) { if (! array_key_exists($candidat,$vote)) { $vote[$candidat]=$default_mention; } @@ -78,24 +78,24 @@ if ($verbose) { print(json_encode($collect)); } -$votant_median_check= ($votants % 2 == 0) ? intdiv($votants,2) : intdiv(($votants-1),2) + 1; +$voter_median_check= ($voters % 2 == 0) ? intdiv($voters,2) : intdiv(($voters-1),2) + 1; -$votant_median=intdiv($votants, 2) + $votants % 2; +$voter_median=intdiv($voters, 2) + $voters % 2; -if ( $votant_median_check != $votant_median ) { - print('[ERROR] le nombre median de votants (' . $votant_median_check . '/' . $votant_median . ') semble erroné. contactez le developpeur de ce code.'); +if ( $voter_median_check != $voter_median ) { + print('[ERROR] le nombre median de voters (' . $voter_median_check . '/' . $voter_median . ') semble erroné. contactez le developpeur de ce code.'); } -$merite=[]; +$merit=[]; $mention_mediane=[]; -$merite_pourcent=[]; +$merit_pourcent=[]; # cumul : du meilleur au pire # range_mentions = range(count(mentions)) # cumul du pire au meilleur $range_mentions = $mentions; -foreach ($candidats as $candidat => $nom_candidat) { +foreach ($candidates as $candidat => $nom_candidat) { $vote=$collect[$candidat]; $cumul=0; for ($i=0; $i < $range_mentions; $i ++) { @@ -106,24 +106,24 @@ foreach ($candidats as $candidat => $nom_candidat) { for ($mention=$range_mentions -1; $mention >=0; $mention --) { if ( array_key_exists($mention,$vote) ) { $cumul=$cumul+$vote[$mention]; - $pourcent[$mention]= ( 100 * $vote[$mention] ) / $votants; + $pourcent[$mention]= ( 100 * $vote[$mention] ) / $voters; } - if ($cumul >= $votant_median and $mention_m == null ) { + if ($cumul >= $voter_median and $mention_m == null ) { $mention_m=$mention; } $m[$mention]=$cumul; } - if ($cumul < $votants) { - print("[ERROR] le cumul des votes " . $cumul . " doit correspondre au nombre de votants. contactez le developpeur de ce code."); + if ($cumul < $voters) { + print("[ERROR] votes cumulated " . $cumul . " should match voters. Contact this code developer."); } $mention_mediane[$candidat]=$mention_m; - $merite[$candidat]=$m; - $merite_pourcent[$candidat]=$pourcent; + $merit[$candidat]=$m; + $merit_pourcent[$candidat]=$pourcent; } if ($verbose) { - print("\nmerite:\n"); - print(json_encode($merite)); + print("\nmerit:\n"); + print(json_encode($merit)); print("\nmention_mediane:\n"); print(json_encode($mention_mediane)); } @@ -132,10 +132,10 @@ if ($verbose) { $found=[]; for ($mention = 0; $mention < $mentions; $mention ++) { - foreach ($mention_mediane as $candidat => $merite_median) - if ($merite_median == $mention) { + foreach ($mention_mediane as $candidat => $merit_median) + if ($merit_median == $mention) { $item=[]; - $item[$candidat]=$candidats[$candidat]; + $item[$candidat]=$candidates[$candidat]; array_push($found,$item); } if (count($found) > 0) { @@ -148,7 +148,7 @@ if ($verbose) { print($nom_mentions[$mention]); } -$result = ['resultat'=> ['mention'=>$nom_mentions[$mention],'candidats' => $found],'merite' => $merite,'profil' => $merite_pourcent,"warnings" => $warnings]; +$result = ['result'=> ['mention'=>$nom_mentions[$mention],'candidates' => $found],'merit' => $merit,'profil' => $merit_pourcent,"warnings" => $warnings]; print(json_encode($result)); diff --git a/samples/1.json b/samples/1.json index e617337..83b7d2b 100644 --- a/samples/1.json +++ b/samples/1.json @@ -1,5 +1,5 @@ { -"candidats":{ +"candidates":{ "A":"albert", "B":"Beatrice", "C":"Chloé", @@ -9,8 +9,8 @@ "G":"Gisèle", "H":"Hugo" }, -"votants":{ - "decompte":10 +"voters":{ + "count":10 }, "mentions":[ "Très Bien", diff --git a/samples/2.json b/samples/2.json index bc35cc6..738dbe2 100644 --- a/samples/2.json +++ b/samples/2.json @@ -1,5 +1,5 @@ { -"candidats":{ +"candidates":{ "A":"albert", "B":"Beatrice", "C":"Chloé", @@ -9,8 +9,8 @@ "G":"Gisèle", "H":"Hugo" }, -"votants":{ - "decompte":10 +"voters":{ + "count":10 }, "mentions":[ "Très Bien", diff --git a/samples/3.json b/samples/3.json index a767354..b4f26e2 100644 --- a/samples/3.json +++ b/samples/3.json @@ -1,5 +1,5 @@ { -"candidats":{ +"candidates":{ "A":"albert", "B":"Beatrice", "C":"Chloé", @@ -9,8 +9,8 @@ "G":"Gisèle", "H":"Hugo" }, -"votants":{ - "decompte":11 +"voters":{ + "count":11 }, "mentions":[ "Très Bien", diff --git a/samples/4.json b/samples/4.json index 4887525..f50a88f 100644 --- a/samples/4.json +++ b/samples/4.json @@ -1,5 +1,5 @@ { -"candidats":{ +"candidates":{ "A":"albert", "B":"Beatrice", "C":"Chloé", @@ -9,8 +9,8 @@ "G":"Gisèle", "H":"Hugo" }, -"votants":{ - "decompte":11 +"voters":{ + "count":11 }, "mentions":[ "Très Bien", diff --git a/samples/5.json b/samples/5.json index 4887525..f50a88f 100644 --- a/samples/5.json +++ b/samples/5.json @@ -1,5 +1,5 @@ { -"candidats":{ +"candidates":{ "A":"albert", "B":"Beatrice", "C":"Chloé", @@ -9,8 +9,8 @@ "G":"Gisèle", "H":"Hugo" }, -"votants":{ - "decompte":11 +"voters":{ + "count":11 }, "mentions":[ "Très Bien",