Heim > Backend-Entwicklung > Python-Tutorial > Meine Python-Sprachlösung für Task Nested Array aus The Weekly Challenge

Meine Python-Sprachlösung für Task Nested Array aus The Weekly Challenge

Mary-Kate Olsen
Freigeben: 2024-12-28 11:59:10
Original
760 Leute haben es durchsucht

My Python Language Solution to Task Nested Array from The Weekly Challenge

1. Einführung

Die Weekly Challenge, organisiert von Mohammad S. Anwar, ist ein freundlicher 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 2: Nested Array von The Weekly Challenge 300 fordert Entwickler auf, die längste Länge des verschachtelten Arrays zu finden.

Einsendeschluss für die Weekly Challenge 300 ist Sonntag, der 23. Dezember 2024 um 23:59 Uhr (britische Zeit). Um Voreingenommenheit zu vermeiden, denken Sie bitte darüber nach, diesen Beitrag nach dem Wettbewerb zu lesen.

2. Aufgabe 2: Verschachteltes Array

Sie erhalten ein Array von ganzen Zahlen, @ints der Länge n, das Permutationen der Zahlen im Bereich [0, n-1] enthält.

Schreiben Sie ein Skript, um eine Menge zu erstellen, set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ... unter Beachtung der folgenden Regeln:

  1. Das erste Element in set[i] beginnt mit der Auswahl der Elemente ints[i].
  2. Das nächste Element in set[i] sollte ints[ints[i]] sein, dann ints[ints[ints[i]]] und so weiter.
  3. Wir hören mit dem Hinzufügen auf, unmittelbar bevor ein doppeltes Element in set[i] auftritt.

Gibt die längste Länge einer Menge set[i] zurück.

The Weekly Challenge 300, Aufgabe 2: Nested Array

Beispiel 1 und Beispiel 2 zeigen die erwarteten Ausgaben für gegebene Eingaben.

Beispiel 1

Input: @ints = (5, 4, 0, 3, 1, 6, 2)
Output: 4
Nach dem Login kopieren

Hier wird einer der längsten Sätze eingestellt[0]:

set[0] = {ints[0], ints[5], ints[6], ints[2]} = {5, 6, 2, 0}
Nach dem Login kopieren

Beispiel 2

Input: @ints = (0, 1, 2)
Output: 1
Nach dem Login kopieren

3. Meine Lösung

def build_set_from_index(ints, starting_index):
    iset = [
            ints[starting_index],
            ]
    for ints_index in range(1, len(ints)):
        pindex = iset[ints_index - 1]
        value = ints[pindex]
        if value in iset:
            break
        iset.append(value)
    return iset

def return_longest_length(ints):
    max_length = 0
    for i in range(0, len(ints)):
        iset = build_set_from_index(ints, i)
        iset_length = len(iset)
        if iset_length > max_length:
            max_length = iset_length
    return max_length
Nach dem Login kopieren

Meine Lösung nutzt zwei Funktionen: build_set_from_index und return_longest_length.

build_set_from_index

build_set_from_index gibt den Satz[Startindex] zurück, der aus den Parametern ints und Startindex erstellt wurde. Ich habe einen iterativen Ansatz verwendet, um set[] zu erstellen.

Mein Ansatz entstand aus einem frühen Morgen und einer anschließenden Paraphrasierung der festgelegten[] Konstruktionsregeln. Zunächst erschienen diese Regeln komplex. Aber nachdem ich Beispiel 1 nach einem anständigen Frühstück und Koffein noch einmal durchgesehen hatte, verstand ich diese Regeln besser. Ich konnte auch die folgende Paraphrase formulieren.

  • set[i] ist eine Menge mit k Elementen.
    • Regel 3 begrenzt den Wert von k.
    • Regel 3 legt fest, wann das Hinzufügen von Elementen zu set[i] beendet werden soll.
  • Der Wert von set[i] bei k = 0 ist gleich ints[i].
  • Für k > 0, das k-te Element von set[i] ist gleich dem Wert von ints[], indiziert mit dem (k-1)-ten Element von set[i].

Mit dem paraphrasierten Ansatz wurde die interaktive Konstruktion von set[0] aus @ints, wie in Beispiel 1, noch einfacher!

  • Bei k = 0 ist der Wert von set[0] gleich ints[0] = 5. set[0] enthält {5}.
  • Bei k = 1 ist der Wert von set[0] gleich ints[5] = 6. set[0] enthält {5, 6}.
  • Bei k = 2 ist der Wert von set[0] gleich ints[6] = 2. set[0] enthält {5, 6, 2}.
  • Bei k = 3 ist der Wert von set[0] gleich ints[2] = 0. set[0] enthält {5, 6, 2, 0}
  • Bei k = 4 STOP, da set[0] ints[0] = 2 enthält.

return_longest_length

return_longest_length ermittelt die maximale Länge aller aus Ints erstellten Mengen[]. Es verwendet build_set_from_index, um set[k] für jedes 0 <= k < len(ints) und identifiziert dann die Menge[k] mit der längsten Länge.

4. Fazit

In diesem Beitrag habe ich Aufgabe 1: Nested Array besprochen und meine Lösung vorgestellt. Meine Lösung ist unkompliziert, beruht weitgehend auf der Art und Weise, wie ich die ursprüngliche Aufgabe umschrieben habe, und unterstreicht die Bedeutung eines guten Frühstücks.

Das obige ist der detaillierte Inhalt vonMeine Python-Sprachlösung für Task Nested Array aus The Weekly Challenge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage