Heim > Backend-Entwicklung > Python-Tutorial > Schritt null, Schritt eins

Schritt null, Schritt eins

Barbara Streisand
Freigeben: 2025-01-02 21:54:38
Original
803 Leute haben es durchsucht

Step zero, step one

Wöchentliche Herausforderung 302

Jede Woche verschickt Mohammad S. Anwar die Weekly Challenge, eine Chance für uns alle, Lösungen für zwei wöchentliche Aufgaben zu finden. Meine Lösungen werden zunächst in Python geschrieben und dann in Perl konvertiert. Es ist eine großartige Möglichkeit für uns alle, etwas Codierung zu üben.

Herausforderung, meine Lösungen

Aufgabe 1: Einsen und Nullen

Aufgabe

Sie erhalten ein Array aus Binärzeichenfolgen, @str, und zwei Ganzzahlen, $x und $y.

Schreiben Sie ein Skript, um die Größe der größten Teilmenge von @str zurückzugeben, sodass die Teilmenge höchstens $x 0 und $y 1 enthält.

Eine Menge m ist eine Teilmenge von n, wenn alle Elemente von m auch Elemente von n sind.

Meine Lösung

Anstatt die Variablen x und y aufzurufen, habe ich sie max_zeros und max_ones genannt, da dies aussagekräftiger ist. Für die Befehlszeile nehme ich die letzten beiden Werte als max_zeros und max_ones, während die restlichen Werte in das s-Array eingefügt werden.

Für diese Aufgabe habe ich die variable Länge, die mit der Anzahl der Elemente in s bis hinunter zu eins beginnt. Für jede Länge verwende ich dann die Kombinationsfunktion von itertool, um alle eindeutigen Kombinationen von Längenelementen zu berechnen und diese in der Teilmengenvariablen zu speichern.

Für jede Teilmenge füge ich alle Zeichenfolgen zusammen, zähle die Anzahl der Nullen und Einsen und schaue, ob sie kleiner oder gleich max_zeros bzw. max_ones sind. Wenn ja, gebe ich die Längenvariable zurück. Wenn keine gefunden wird, gebe ich Null zurück.

def ones_and_zeros(s: list, max_zeros: int, max_ones: int) -> int:
    for length in range(len(s), 0, -1):
        for subset in combinations(s, length):
            bits = ''.join(subset)
            if bits.count('0') <= max_zeros and bits.count('1') <= max_ones:
                return length

    return 0
Nach dem Login kopieren

Beispiele

$ ./ch-1.py 10 0001 111001 1 0 5 3
4

$ ./ch-1.py 10 0001 10 1 0 1 1
2
Nach dem Login kopieren

Aufgabe 2: Schritt für Schritt

Aufgabe

Sie erhalten ein Array von Ganzzahlen, @ints.

Schreiben Sie ein Skript, um den minimalen positiven Startwert zu ermitteln, sodass die Schritt-für-Schritt-Summe nie kleiner als eins ist.

Meine Lösung

Um es wirklich zu pedantisch zu machen: Der „minimale positive Startwert“ für eine Liste positiver Ganzzahlen ist 0,000...01. Das zweite Beispiel scheint jedoch zu implizieren, dass es sich bei dieser Zahl tatsächlich um eine ganze Zahl handelt.

Für diese Aufgabe beginne ich mit zwei Variablen: min_value, der als erster Wert der Ints-Liste festgelegt wird, und value, der Null ist. Dann iteriere ich über die Ints-Liste und füge diese Zahl zur Wertvariablen hinzu. Wenn der Wert kleiner als min_value ist, aktualisiere ich die Variable min_value.

Wenn min_value größer oder gleich Null ist, gebe ich 1 zurück. Wenn nicht, gebe ich 1 - min_value zurück.

def step_by_step(ints: list) -> int:
    min_value = ints[0]
    value = 0

    for i in ints:
        value += i
        if min_value > value:
            min_value = value

    if min_value >= 0:
        return 1

    return 1 - min_value
Nach dem Login kopieren

Beispiele

$ ./ch-1.py 10 0001 111001 1 0 5 3
4

$ ./ch-1.py 10 0001 10 1 0 1 1
2

$ ./ch-2.py -3 2 -3 4 2
5

$ ./ch-2.py 1 2
1

$ ./ch-2.py 1 -2 -3
5
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSchritt null, Schritt eins. 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