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.
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:
- pilih atur[i] boleh dibahagikan dengan i
- 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.
Input: $n = 2 Output: 2
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:
Pilihan(2, 1) juga merupakan susunan yang cantik kerana semua elemennya sepadan sama ada dengan syarat pertama atau kedua:
Input: $n = 1 Output: 1
Input: $n = 10 Output: 700
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
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.
count_beautiful_permutations kembali, untuk parameter permutation leterable perms, jumlah bilangan pilih atur dalam perm yang sepadan dengan keadaan susunan yang cantik.
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!