Ganzzahlpartitionierung mit Eleganz in Python
Die Aufgabe der Ganzzahlpartitionierung besteht darin, eine gegebene Zahl in eine Summe positiver Ganzzahlen, sogenannte Teile, zu zerlegen . Ein häufiges Beispiel ist die Partitionierung der Zahl 4, die als 1 1 1 1 oder 1 1 2 oder 2 2 dargestellt werden kann.
Elegante Python-Lösung
Um das anzugehen Für einen eleganten Ansatz wurde eine Python-Funktion mit dem Namen „Partitionen“ vorgeschlagen:
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
Diese Funktion nutzt Rekursion und liefert alle möglichen Partitionen einer gegebenen Zahl n. Es beginnt mit der Partitionierung von n als einzelnem Teil (selbst) und partitioniert dann n-i rekursiv in Teile, die größer oder gleich i sind.
Leistungsbewertung
Verglichen mit Diese Lösung ist eine zuvor vorgeschlagene Funktion und weist erhebliche Verbesserungen sowohl bei der Geschwindigkeit als auch bei der Speichernutzung auf:
import timeit n = 20 # Original function def nolen(n): """Original function for integer partitioning.""" # implementation omitted for brevity # Proposed 'partitions' function def partitions(n, I=1): # implementation omitted for brevity # Measure execution time print("Original function (r0): ", timeit.timeit(lambda: r0 = nolen(n), number=100)) print("Proposed function (r1): ", timeit.timeit(lambda: r1 = list(partitions(n)), number=100)) print(f"Partitions are equal: {sorted(map(sorted, r0)) == sorted(map(sorted, r1))}")
Die vorgeschlagene Partitionsfunktion ist ungefähr 1370-mal schneller als das Original und verbraucht deutlich weniger Speicher.
Alternative Ansätze
Während die Partitionsfunktion eine leistungsstarke und elegante Lösung bietet, gibt es auf Plattformen wie ActiveState andere Optionen:
Fazit
Die vorgeschlagene Partitionsfunktion bietet einen effizienten und prägnanten Ansatz für die Ganzzahlpartitionierung in Python. Seine Eleganz und Geschwindigkeit machen es zu einem wertvollen Werkzeug für Programmierer, die einen verbesserten Codierungsstil suchen.
Das obige ist der detaillierte Inhalt vonWie können wir Ganzzahlen in Python elegant partitionieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!