Heim > Backend-Entwicklung > Python-Tutorial > Lösen der Einsen und Nullen der wöchentlichen Herausforderungsaufgabe in Python

Lösen der Einsen und Nullen der wöchentlichen Herausforderungsaufgabe in Python

Patricia Arquette
Freigeben: 2025-01-03 13:36:40
Original
834 Leute haben es durchsucht

Solving the Weekly Challenge  Task Ones and Zeroes in Python

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 1: Einsen und Nullen von The Weekly Challenge fordert Entwickler auf, die größte Teilmenge zu finden, die höchstens x Nullen und y Einsen enthält.

In diesem Beitrag diskutiere und präsentiere ich meine Python-Sprachlösung für Aufgabe 1: Einsen und Nullen und schließe sie mit einer kurzen Schlussfolgerung ab.

2. Aufgabe 1: Einsen und Nullen

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.

Die wöchentliche Herausforderung 302, Aufgabe 1: Einsen und Nullen

Beispiele 1 und 2 zeigen die erwarteten Ausgaben aus gegebenen Eingaben.

Beispiel 1

Input: @str = ("10", "0001", "111001", "1", "0")
       $x = 5
       $y = 3
Output: 4
Nach dem Login kopieren

Die größte Teilmenge mit höchstens fünf Nullen und drei Einsen: („10“, „0001“, „1“, „0“).

Beispiel 2

Input: @str = ("10", "1", "0")
       $x = 1
       $y = 1
Output: 2
Nach dem Login kopieren

Die größte Teilmenge mit höchstens einer Null und einer Eins: („1“, „0“).

3. Meine Lösung zu Aufgabe 1

from itertools import combinations

def return_subset(strs: list[list], x: int, y: int) -> int | None:
    for r in range(len(strs) - 1, 1, -1):
        subsets = combinations(strs, r)
        for subset in subsets:
            total_zeros = 0
            total_ones = 0
            for element in subset:
                total_zeros += element.count('0')
                total_ones += element.count('1')
            if total_zeros <= x and total_ones <= y:
                return len(subset)
    return None
Nach dem Login kopieren

Meine Lösung verwendet itertools.combinations, for-Schleifen und if-Anweisungen, um die Teilmenge zu finden, die den Aufgabenanforderungen entspricht:

  • Ich verwende die Kombinationsfunktion, um alle Teilmengen von Zeichenfolgen mit der Länge r zu generieren. Ich beginne mit der maximalen Teilmengenlänge, r = len(strs) - 1 und dekrementiere auf die kleinste Teilmengenlänge, r = 1.
  • Für jede Teilmenge der Länge r
    • Ich zähle die Gesamtzahl der Nullen (total_zeros) in der Teilmenge.
    • Ich zähle die Gesamtzahl der Einsen (total_ones) in der Teilmenge.
    • Ich gebe die Länge der Teilmenge zurück, wenn sie den erforderlichen Bedingungen entspricht (total_zeros <= x und total_ones <= y).
  • Wenn es keine Teilmengen von Strs gibt, gebe ich None zurück.

4. Fazit

In diesem Beitrag habe ich Aufgabe 1: Einsen und Nullen besprochen und meine Lösung für diese Aufgabe vorgestellt.

Erfahren Sie mehr über die neuesten und vergangenen Herausforderungen auf der Website der Weekly Challenge:
https://theweeklychallenge.org/

Erfahren Sie mehr über die Teilnahme in den FAQ zur Weekly Challenge:
https://theweeklychallenge.org/faq/

Das obige ist der detaillierte Inhalt vonLösen der Einsen und Nullen der wöchentlichen Herausforderungsaufgabe in Python. 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