Programme à simplifier
Résolu/Fermé
A voir également:
- Programme à simplifier
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
Les modifications de fred1599 sont judicieuses. Par contre à la base ton algorithme n'est pas optimal. Tu génères toutes les combinaisons imaginables et à la fin tu vérifies que la somme est bonne. Du coup ç a fait énormément de calculs pour rien. Je te proposes un algorithmes par récurrence qui calcule directement toutes les bonnes combinaisons :
def pilepoile(n, taille):
if taille == 1:
return [[n]]
else:
toutes_les_listes = []
for i in range(n + 1):
intermediates = pilepoile(n-i, taille -1)
for l in intermediates:
l.insert(0,i)
toutes_les_listes.extend(intermediates)
return toutes_les_listes
def affiche_sommes(n, taille):
for i in pilepoile(n, taille):
print(i)
Utilisateur anonyme
8 août 2014 à 21:52
8 août 2014 à 21:52
Pour somme_liste,
Pour retourne_liste,
def somme_liste(Q): if Q: return sum(Q) return None
Pour retourne_liste,
def retourne_liste(G): return list(G)
@Help-Jason, j'ai donné tout simplement l'équivalent de tes fonctions, qui ne méritent en elles mêmes pas de se compliquer la vie comme tu le fais. En fait ta fonction somme_liste, est la fonction sum en python. Je teste Q pour savoir si elle est vide, si c'est le cas, je renvoie None. Dans le cas où je ne testais pas, la somme serait de 0 pour une liste vide.
retourne_liste que je te présente est là encore pour t'annoncer que tu travailles dans le vide, et que son équivalent est le retour de list(G), pourquoi se compliquer la vie ?
Bref tout cela pour dire qu'il y a des fonctions nettement simplifiables, voir peut-être même inutiles...
retourne_liste que je te présente est là encore pour t'annoncer que tu travailles dans le vide, et que son équivalent est le retour de list(G), pourquoi se compliquer la vie ?
Bref tout cela pour dire qu'il y a des fonctions nettement simplifiables, voir peut-être même inutiles...
11 août 2014 à 12:22
Modifié par policier.moustachu le 11/08/2014 à 12:35
Et il va tout garder en mémoire aussi.
Donc ça risque de faire crier ta machine si tu lui demandes un gros calcul du style affice_somme(1000,10)
11 août 2014 à 16:27
Par exemple j'essaie d'avoir toutes les listes de 3 éléments dont la somme fait 10 :
Voilà pourquoi pilepoile s'appelle lui-même. Tu comprends ?
11 août 2014 à 17:40
11 août 2014 à 17:50