Rumah > pembangunan bahagian belakang > Tutorial Python > Penyelesaian Bahasa Python Saya untuk Susunan Cantik Tugasan daripada Cabaran Mingguan

Penyelesaian Bahasa Python Saya untuk Susunan Cantik Tugasan daripada Cabaran Mingguan

Barbara Streisand
Lepaskan: 2024-12-27 02:40:10
asal
171 orang telah melayarinya

My Python Language Solution to Task Beautiful Arrangement from The Weekly Challenge

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: Susunan Cantik daripada Cabaran Mingguan menjemput pembangun untuk mencari bilangan pilih atur tersusun cantik daripada semua pilih atur yang dijana daripada integer positif.

Dalam siaran ini saya membincangkan dan membentangkan penyelesaian saya kepada, Tugasan 1: Susunan Cantik, dan mengakhiri kesimpulan ringkas.

Tarikh akhir Cabaran Mingguan 300 ialah Ahad, 23 Disember 2024 pada 23:59 (Waktu UK). Untuk mengelakkan berat sebelah, pertimbangkan untuk membaca siaran ini selepas bertanding.

2. Tugasan 1: Susunan Cantik

Anda diberi integer positif, $int.

Tulis skrip untuk mengembalikan bilangan susunan cantik yang boleh anda bina daripada $int.

Pilihan bagi n integer, diindeks 1, dianggap sebagai susunan yang cantik jika bagi setiap i (1 <= i <= n) salah satu daripada yang berikut adalah benar:

  1. pilih atur[i] boleh dibahagikan dengan i
  2. i boleh dibahagikan dengan pilih atur[i]

Cabaran Mingguan 300, Tugasan 1: Susunan Cantik

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

Contoh 1

Input: $n = 2
Output: 2
Salin selepas log masuk

Untuk n = 2 dan dengan integer i supaya (1 <= i <= n) terdapat dua pilih atur (1, 2) dan (2, 1). Output: 2 kerana kedua-duanya memenuhi keperluan susunan yang cantik.

Pilihan (1, 2) adalah susunan yang cantik kerana semua elemennya sepadan dengan syarat pertama:

  • Pada i = 1, pilih atur[1] = 1 memenuhi syarat pertama, kerana satu boleh dibahagikan dengan satu.
  • Pada i = 2, pilih atur[2] = 2 memenuhi syarat pertama, kerana dua boleh dibahagikan dengan dua.

Pilihan(2, 1) juga merupakan susunan yang cantik kerana semua elemennya sepadan sama ada dengan syarat pertama atau kedua:

  • Pada i = 1, pilih atur[1] = 2 memenuhi syarat pertama, kerana dua boleh dibahagikan dengan satu.
  • Pada i = 2, pilih atur[2] = 1 memenuhi syarat kedua, kerana dua boleh dibahagikan dengan satu.

Contoh 2

Input: $n = 1
Output: 1
Salin selepas log masuk

Contoh 3

Input: $n = 10
Output: 700
Salin selepas log masuk

3. Penyelesaian saya untuk Tugasan 1

from itertools import permutations

def generate_permutations(n)
    iterable = list(range(1, n + 1))
    return permutations(iterable)

def count_beautiful_arrangements(perms):
    num_beautiful_arr = 0
    for perm in perms:
        is_beautiful_arr = True
        for value_index, value in enumerate(perm):
            if value % (value_index + 1) == 0:
                continue
            elif (value_index + 1) % value == 0:
                continue
            else:
                is_beautiful_arr = False
                break
        if is_beautiful_arr == True:
            num_beautiful_arr += 1
    return num_beautiful_arr
Salin selepas log masuk

Penyelesaian saya yang tidak elegan dan tidak canggih menggunakan dua fungsi generate_permutation dan count_beautiful_arrangements.

generate_permutations kembali, untuk parameter n, semua pilih atur untuk set dengan 1 <= i <= n.

  • iterable = list(julat(1, n 1)) menjana senarai integer dengan 1 <= i <= n.
  • pilih atur(iterable), diimport daripada modul itertools, menjana semua pilih atur bagi iterable.

count_beautiful_permutations kembali, untuk parameter permutation leterable perms, jumlah bilangan pilih atur dalam perm yang sepadan dengan keadaan susunan yang cantik.

  • Gelung luar untuk perm dalam... berulang melalui setiap pilih atur.
  • Ia bermula dengan andaian bahawa perm adalah susunan yang indah (is_beautiful_arr = Benar).
    • Gelung dalaman untuk value_index, value in... menyemak sama ada setiap elemen perm sepadan sama ada syarat 1 atau syarat 2.
      • Jika semua elemen sepadan dengan mana-mana keadaan, perm dikira sebagai susunan yang cantik.
      • Jika tidak, jika mana-mana elemen tidak sepadan dengan syarat 1 mahupun syarat 2, maka is_beautiful_arr ditetapkan kepada False, gelung pecah awal dan perm tidak dikira sebagai susunan yang cantik.

4. Kesimpulan

Dalam siaran ini saya membincangkan Tugasan 1: Susunan Cantik dan saya membentangkan penyelesaian saya. Penyelesaian saya yang 'tidak elegan dan tidak canggih' berfungsi, tetapi ia mempunyai ruang yang besar untuk penambahbaikan.

Atas ialah kandungan terperinci Penyelesaian Bahasa Python Saya untuk Susunan Cantik Tugasan daripada Cabaran Mingguan. 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