Rumah > pembangunan bahagian belakang > Tutorial Python > Menyelesaikan Tugasan Cabaran Mingguan dan Sifar dalam Python

Menyelesaikan Tugasan Cabaran Mingguan dan Sifar dalam Python

Patricia Arquette
Lepaskan: 2025-01-03 13:36:40
asal
834 orang telah melayarinya

Solving the Weekly Challenge  Task Ones and Zeroes in Python

1. Pengenalan

Cabaran Mingguan, anjuran Mohammad S. Anwar, adalah pertandingan mesra di mana pembangun bersaing dengan menyelesaikan sepasang tugas. Ia menggalakkan penyertaan daripada pembangun semua bahasa dan peringkat melalui pembelajaran, perkongsian dan keseronokan.

Tugas 1: Ones and Zeroes dari The Weekly Challenge menugaskan pembangun untuk mencari subset terbesar yang mengandungi paling banyak x sifar dan y.

Dalam siaran ini saya membincangkan, dan membentangkan penyelesaian bahasa Python saya kepada, Tugasan 1: Ones and Zeroes, dan bungkus dengan kesimpulan ringkas.

2. Tugasan 1: Satu dan Sifar

Anda diberi tatasusunan rentetan binari, @str, dan dua integer, $x dan $y.

Tulis skrip untuk mengembalikan saiz subset terbesar @str supaya terdapat paling banyak $x 0 dan $y 1 dalam subset.

Himpunan m ialah subset bagi n jika semua unsur m juga merupakan unsur n.

Cabaran Mingguan 302, Tugasan 1: Satu dan Sifar

Contoh 1 dan 2 membentangkan output yang dijangkakan daripada input yang diberikan.

Contoh 1

Input: @str = ("10", "0001", "111001", "1", "0")
       $x = 5
       $y = 3
Output: 4
Salin selepas log masuk

Subset terbesar dengan paling banyak lima 0 dan tiga 1: ("10", "0001", "1", "0").

Contoh 2

Input: @str = ("10", "1", "0")
       $x = 1
       $y = 1
Output: 2
Salin selepas log masuk

Subset terbesar dengan paling banyak satu 0 dan satu 1: ("1", "0").

3. Penyelesaian saya untuk Tugasan 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
Salin selepas log masuk

Penyelesaian saya menggunakan itertools.combinations, untuk gelung dan pernyataan if untuk mencari subset yang sepadan dengan keperluan tugas:

  • Saya menggunakan fungsi gabungan untuk menjana semua subset strs dengan panjang r. Saya mulakan dengan panjang subset maksimum, r = len(strs) - 1 dan susut kepada panjang subset terkecil, r = 1.
  • Untuk setiap subset panjang r
    • Saya mengira jumlah bilangan sifar (total_sifar) dalam subset.
    • Saya mengira jumlah bilangan satu (total_ones) dalam subset.
    • Saya mengembalikan panjang subset jika ia sepadan dengan syarat yang diperlukan (total_sifar <= x dan total_ones <= y).
  • Jika tiada subset bagi strs, maka saya akan mengembalikan Tiada.

4. Kesimpulan

Dalam siaran ini saya membincangkan Tugasan 1: Satu dan Sifar, dan saya membentangkan penyelesaian saya untuk tugas ini.

Ketahui lebih lanjut tentang cabaran terkini dan lepas di tapak web The Weekly Challenge:
https://theweeklychallenge.org/

Ketahui lebih lanjut tentang bersaing di Soalan Lazim Cabaran Mingguan:
https://theweeklychallenge.org/faq/

Atas ialah kandungan terperinci Menyelesaikan Tugasan Cabaran Mingguan dan Sifar dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan