Combinaisons de répartition de votes
Bonjour,
L'intitulé me parait déjà compliqué :roll:
Je cherche à construire un tableau contenant toutes les combinaisons possibles de ventilation des votes.
Ainsi, et pour l'exemple: avec 4 votants et 4 candidats, le tableau résultant :
Code:
1 2 3 4 5 6 7 8
|
4 0 0 0
3 1 0 0
3 0 1 0
3 0 0 1
2 2 0 0
...
0 0 0 4 |
soit 35 lignes (si je ne me suis pas gourré dans mon tableau manuel)
je pensais à du récursif, mais je n'arrive à trouver la condition de sortie satisfaisante, et après la 4ème ligne, ça part en sucette et j'ai toujours "3" en colonne 1.
Avez-vous un algo à me proposer ?
Précision: je dois faire ça en vba/excel
Generation des tuples pour des paramêtres quelconques
Bonjour,
Voilà un script pour la génération des tuples de manière récursive.
L'idée est de créer une fonction listant les tubles étant donnés:
- les valeurs du tuple calculées jusque là (initialement vide)
- le nombre d'éléments restant à ajouter dans le tuple
- la somme des valeurs qui restent à rajouter
Je l'ai fait en Python qui est assez explicite. Je te laisse le traduire dans le language que tu veux.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # Compute all n-tuples with given sum, starting with the optional tuple values
# Found tuples are added to result
def get_tuples_with_sum(result, n, sum, tuple=[]):
if len(tuple) == n:
# Stop recursion when the tuple is complete, and then the sum should be null
if sum == 0:
result.append(tuple.copy())
return
for x in range(sum + 1): # between 0 and sum included
tuple.append(x)
get_tuples_with_sum(result, n, sum - x, tuple)
tuple.pop()
result = []
get_tuples_with_sum(result, 4, 4)
for X in result:
print(X) |