Maison > développement back-end > Tutoriel Python > Résoudre les tâches un et zéro du défi hebdomadaire en Python

Résoudre les tâches un et zéro du défi hebdomadaire en Python

Patricia Arquette
Libérer: 2025-01-03 13:36:40
original
834 Les gens l'ont consulté

Solving the Weekly Challenge  Task Ones and Zeroes in Python

1. Introduction

Le Weekly Challenge, organisé par Mohammad S. Anwar, est une compétition amicale dans laquelle les développeurs s'affrontent en résolvant une paire de tâches. Il encourage la participation des développeurs de toutes langues et de tous niveaux à travers l'apprentissage, le partage et le plaisir.

Tâche 1 : Les uns et les zéros du défi hebdomadaire charge les développeurs de trouver le plus grand sous-ensemble contenant au plus x zéros et y uns.

Dans cet article, je discute et présente ma solution en langage Python pour la tâche 1 : des uns et des zéros, et je termine par une brève conclusion.

2. Tâche 1 : Des uns et des zéros

Vous recevez un tableau de chaînes binaires, @str, et deux entiers, $x et $y.

Écrivez un script pour renvoyer la taille du plus grand sous-ensemble de @str de telle sorte qu'il y ait au plus $x 0 et $y 1 dans le sous-ensemble.

Un ensemble m est un sous-ensemble de n si tous les éléments de m sont également des éléments de n.

Le défi hebdomadaire 302, tâche 1 : des uns et des zéros

Les exemples 1 et 2 présentent les résultats attendus à partir d'entrées données.

Exemple 1

Input: @str = ("10", "0001", "111001", "1", "0")
       $x = 5
       $y = 3
Output: 4
Copier après la connexion

Le plus grand sous-ensemble avec au plus cinq 0 et trois 1 : ("10", "0001", "1", "0").

Exemple 2

Input: @str = ("10", "1", "0")
       $x = 1
       $y = 1
Output: 2
Copier après la connexion

Le plus grand sous-ensemble avec au plus un 0 et un 1 : ("1", "0").

3. Ma solution à la tâche 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
Copier après la connexion

Ma solution utilise itertools.combinations, des boucles for et des instructions if pour trouver le sous-ensemble qui correspond aux exigences de la tâche :

  • J'utilise la fonction de combinaisons pour générer tous les sous-ensembles de chaînes de longueur r. Je commence par la longueur maximale du sous-ensemble, r = len(strs) - 1 et je décrémente jusqu'à la plus petite longueur du sous-ensemble, r = 1.
  • Pour chaque sous-ensemble de longueur r
    • Je compte le nombre total de zéros (total_zeros) dans le sous-ensemble.
    • Je compte le nombre total de uns (total_ones) dans le sous-ensemble.
    • Je renvoie la longueur du sous-ensemble si elle correspond aux conditions requises (total_zeros <= x et total_ones <= y).
  • S'il n'y a aucun sous-ensemble de chaînes, alors je renvoie Aucun.

4. Conclusion

Dans cet article, j'ai discuté de la tâche 1 : uns et zéros, et j'ai présenté ma solution à cette tâche.

Apprenez-en plus sur les défis les plus récents et passés sur le site Web The Weekly Challenge :
https://theweeklychallenge.org/

En savoir plus sur la participation à la FAQ du Défi hebdomadaire :
https://theweeklychallenge.org/faq/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal