Code Python élégant pour le partitionnement d'entiers
Partitionner un entier en entiers positifs plus petits présente un défi informatique qui a déclenché le développement de diverses solutions. Pour améliorer le style et l'efficacité du codage, nous recherchons une approche élégante pour résoudre ce problème.
Une de ces solutions, proposée par un intervenant, est la fonction partitions() :
<code class="python">def partitions(n, I=1): yield (n,) for i in range(I, n//2 + 1): for p in partitions(n-i, i): yield (i,) + p</code>
Cette fonction génère toutes les partitions d'un entier n en commençant par des parties de taille non inférieure à I. Par rapport à la fonction de Nolen, partitions() est considérablement plus rapide et donne des résultats plus petits.
Cependant, les deux fonctions sont beaucoup plus lentes que accel_asc (), qui utilise un algorithme ascendant accéléré. accel_asc() utilise une boucle itérative pour partitionner l'entier, ce qui entraîne à la fois la vitesse et l'efficacité de la mémoire.
Pour référence ultérieure, vous pouvez explorer des solutions Python supplémentaires pour le partitionnement d'entiers sur la page Générateur pour partitions entières (recette Python) d'ActiveState. .
Notre discussion met en évidence les différentes approches disponibles pour résoudre le problème de partitionnement d'entiers en Python, répondant à différents besoins en matière de vitesse, d'efficacité de la mémoire et d'élégance du style de codage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!