Advent of code

 15 décembre 2015 

  Science for Hungry People :
  1. code.py
  2. codeRepartitionNonRecursif.py
  3. codeRepartitionOneLiner.py
  4. 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)))