◂ 15 décembre 2015 ▸
Science for Hungry People :
- code.py
- codeRepartitionNonRecursif.py
- codeRepartitionOneLiner.py
- maths.py
from itertools import combinations_with_replacement, groupby
# Deux fois plus lent
# A l'avantage de retourner directement un dictionnaire avec les quantites pour chaque ingredient et sans les ingredients non utilises
def repartitions(nb_billes, godets):
return [dict(map(lambda x:(x[0],len(list(x[1]))), groupby(combinaison, lambda x:x))) for combinaison in combinations_with_replacement(godets, nb_billes)]
example = repartitions(100, ['Sprinkles', 'Butterscotch', 'Chocolate', 'Candy'])
print(example[:5])
# Voir aussi sympy.utilities.iterables pour plus de fonctions combinatoires
# list(map(lambda x:list(map(lambda y:len(y)-1, x)), kbins(list(range(nb_billes)), nb_godets)))