Heim >Backend-Entwicklung >Python-Tutorial >Meine Python-Sprachlösung für die Aufgabe Beautiful Arrangement aus The Weekly Challenge
Die von Mohammad S. Anwar organisierte Weekly Challenge ist ein freundschaftlicher Wettbewerb, bei dem Entwickler gegeneinander antreten, indem sie zwei Aufgaben lösen. Es fördert die Teilnahme von Entwicklern aller Sprachen und Niveaus durch Lernen, Teilen und Spaß haben.
Aufgabe 1: Schöne Anordnung von The Weekly Challenge lädt Entwickler dazu ein, die Anzahl der schön arrangierten Permutationen aus allen Permutationen zu ermitteln, die aus einer positiven Ganzzahl generiert werden.
In diesem Beitrag diskutiere und präsentiere ich meine Lösung für Aufgabe 1: Schönes Arrangement und schließe mit einem kurzen Fazit ab.
Einsendeschluss für die Weekly Challenge 300 ist Sonntag, der 23. Dezember 2024 um 23:59 Uhr (britische Zeit). Um Voreingenommenheit zu vermeiden, sollten Sie diesen Beitrag nach dem Wettkampf lesen.
Sie erhalten eine positive Ganzzahl, $int.
Schreiben Sie ein Skript, um die Anzahl der schönen Arrangements zurückzugeben, die Sie aus $int erstellen können.
Eine Permutation von n ganzen Zahlen, 1-indiziert, gilt als schöne Anordnung, wenn für jedes i (1 <= i <= n) eine der folgenden Aussagen zutrifft:
- Permutation[i] ist durch i teilbar
- i ist durch Permutation teilbar[i]
Die wöchentliche Herausforderung 300, Aufgabe 1: Schönes Arrangement
Beispiele 1 und 2 zeigen die erwarteten Ausgaben aus gegebenen Eingaben.
Input: $n = 2 Output: 2
Für n = 2 und mit i ganzen Zahlen, so dass (1 <= i <= n) gibt es zwei Permutationen (1, 2) und (2, 1). Ausgabe: 2, weil beide die Anforderungen an eine schöne Anordnung erfüllen.
Die Permutation (1, 2) ist eine schöne Anordnung, weil alle ihre Elemente der ersten Bedingung entsprechen:
Die Permutation(2, 1) ist auch eine schöne Anordnung, weil alle ihre Elemente entweder der ersten oder der zweiten Bedingung entsprechen:
Input: $n = 1 Output: 1
Input: $n = 10 Output: 700
from itertools import permutations def generate_permutations(n) iterable = list(range(1, n + 1)) return permutations(iterable) def count_beautiful_arrangements(perms): num_beautiful_arr = 0 for perm in perms: is_beautiful_arr = True for value_index, value in enumerate(perm): if value % (value_index + 1) == 0: continue elif (value_index + 1) % value == 0: continue else: is_beautiful_arr = False break if is_beautiful_arr == True: num_beautiful_arr += 1 return num_beautiful_arr
Meine unelegante und unkomplizierte Lösung nutzt zwei Funktionen: „generate_permutations“ und „count_beautiful_arrangements“.
generate_permutations gibt für den Parameter n alle Permutationen für die Menge zurück, bei der 1 <= i <= n.
count_beautiful_permutations gibt für den Parameter permutations iterable perms die Gesamtzahl der Permutationen in Perms zurück, die den schönen Anordnungsbedingungen entsprechen.
In diesem Beitrag habe ich Aufgabe 1: Schönes Arrangement besprochen und meine Lösung vorgestellt. Meine „unelegante und unausgeklügelte“ Lösung funktioniert, bietet aber erheblichen Raum für Verbesserungen.
Das obige ist der detaillierte Inhalt vonMeine Python-Sprachlösung für die Aufgabe Beautiful Arrangement aus The Weekly Challenge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!