#!/usr/bin/env python # -*- coding: utf-8 -*- """ http://paternault.fr/informatique/jouets/aperitif.html https://git.framasoft.org/spalax/jouets/blob/master/README.rst https://wiki.python.org/moin/Generators """ def aperitif(total, prix): """Solutions du problème des apéritifs. version sans itérateur :arg total int: Prix total à atteindre. :arg prix list: Liste des prix disponibles. :return: liste des solutions, ces solutions étant des listes correspondant à ``prix``. """ if len(prix) == 0: return [] if len(prix) == 1: if total % prix[0] == 0: return [[int(total // prix[0])]] liste=[] for nombre in range(int((total // prix[0])+1)): for solution in aperitif(total - prix[0]*nombre, prix[1:]): liste.append([nombre] + solution) return liste atomes=[1,12,14,16,32] # atomes=atomes[::-1] masse=59 print(atomes,type(atomes)) print(masse, type(masse)) print(aperitif(masse, atomes))