Heim >Backend-Entwicklung >Python-Tutorial >Meine Python-Sprachlösung für die Aufgabe Beautiful Arrangement aus The Weekly Challenge

Meine Python-Sprachlösung für die Aufgabe Beautiful Arrangement aus The Weekly Challenge

Barbara Streisand
Barbara StreisandOriginal
2024-12-27 02:40:10172Durchsuche

My Python Language Solution to Task Beautiful Arrangement from The Weekly Challenge

1. Einführung

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.

2. Aufgabe 1: Schönes Arrangement

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:

  1. Permutation[i] ist durch i teilbar
  2. 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.

Beispiel 1

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:

  • Bei i = 1 erfüllt Permutation[1] = 1 die erste Bedingung, da eins durch eins teilbar ist.
  • Bei i = 2 erfüllt Permutation[2] = 2 die ersten Bedingungen, da zwei durch zwei teilbar ist.

Die Permutation(2, 1) ist auch eine schöne Anordnung, weil alle ihre Elemente entweder der ersten oder der zweiten Bedingung entsprechen:

  • Bei i = 1 erfüllt Permutation[1] = 2 die erste Bedingung, da zwei durch eins teilbar ist.
  • Bei i = 2 erfüllt Permutation[2] = 1 die zweite Bedingung, da zwei durch eins teilbar ist.

Beispiel 2

Input: $n = 1
Output: 1

Beispiel 3

Input: $n = 10
Output: 700

3. Meine Lösung zu Aufgabe 1

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.

  • iterable = list(range(1, n 1)) generiert eine Liste von ganzen Zahlen, wobei 1 <= i <= n.
  • permutations(iterable), importiert aus dem itertools-Modul, generiert alle Permutationen von iterable.

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.

  • Die äußere Schleife für perm in... durchläuft jede Permutation.
  • Es beginnt mit der Annahme, dass Dauerwelle ein wunderschönes Arrangement ist (is_beautiful_arr = True).
    • Die innere Schleife für value_index, value in... prüft, ob jedes Element von perm entweder Bedingung 1 oder Bedingung 2 erfüllt.
      • Wenn alle Elemente eine der beiden Bedingungen erfüllen, gilt die Dauerwelle als schönes Arrangement.
      • Andernfalls, wenn ein Element weder Bedingung 1 noch Bedingung 2 erfüllt, wird is_beautiful_arr auf False gesetzt, die Schleife bricht vorzeitig ab und perm wird nicht als schöne Anordnung gezählt.

4. Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn