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 2: Nested Array daripada The Weekly Challenge 300 menggesa pembangun mencari panjang tatasusunan bersarang terpanjang.
Tarikh akhir Cabaran Mingguan 300 ialah Ahad, 23 Disember 2024 pada 23:59 (Waktu UK). Untuk mengelakkan berat sebelah, sila pertimbangkan untuk membaca siaran ini selepas bertanding.
Anda diberi tatasusunan integer, @ints panjang n mengandungi pilihatur nombor dalam julat [0, n-1].
Tulis skrip untuk membina set, set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ... tertakluk kepada peraturan berikut:
- Elemen pertama dalam set[i] bermula dengan pemilihan elemen int[i].
- Elemen seterusnya dalam set[i] hendaklah menjadi int[ints[i]], dan kemudian int[ints[i]]], dan seterusnya.
- Kami berhenti menambah tepat sebelum elemen pendua berlaku dalam set[i].
Kembalikan panjang terpanjang set set[i].
Cabaran Mingguan 300, Tugasan 2: Susunan Bersarang
Contoh 1 dan Contoh 2 membentangkan output yang dijangkakan untuk input yang diberikan.
Input: @ints = (5, 4, 0, 3, 1, 6, 2) Output: 4
Di sini satu set terpanjang ditetapkan[0]:
set[0] = {ints[0], ints[5], ints[6], ints[2]} = {5, 6, 2, 0}
Input: @ints = (0, 1, 2) Output: 1
def build_set_from_index(ints, starting_index): iset = [ ints[starting_index], ] for ints_index in range(1, len(ints)): pindex = iset[ints_index - 1] value = ints[pindex] if value in iset: break iset.append(value) return iset def return_longest_length(ints): max_length = 0 for i in range(0, len(ints)): iset = build_set_from_index(ints, i) iset_length = len(iset) if iset_length > max_length: max_length = iset_length return max_length
Penyelesaian saya menggunakan dua fungsi build_set_from_index dan return_longest_length.
build_set_from_index mengembalikan set[starting_index] yang dibina daripada parameter ints dan starting_index. Saya menggunakan pendekatan berulang untuk membina set[].
Pendekatan saya muncul dari awal pagi dan seterusnya parafrasa set[] peraturan pembinaan. Pada mulanya, peraturan ini kelihatan rumit. Tetapi, selepas menyemak semula Contoh 1 selepas sarapan pagi yang baik dan kafein, saya lebih memahami peraturan ini. Saya juga dapat merumuskan parafrasa berikut.
Menggunakan pendekatan yang diparafrasa, membina set[0] secara interaktif daripada @ints, seperti dalam Contoh 1, menjadi lebih mudah!
return_longest_length mencari panjang maksimum semua set[] yang dibina daripada int. Ia menggunakan build_set_from_index untuk menjana set[k] bagi setiap 0 <= k < len(ints) dan kemudian mengenal pasti set[k] dengan panjang terpanjang.
Dalam siaran ini saya membincangkan Tugasan 1: Nested Array dan saya membentangkan penyelesaian saya. Penyelesaian saya adalah mudah, sebahagian besarnya dimaklumkan oleh cara saya menghuraikan tugas asal dan menyerlahkan kepentingan sarapan yang enak.
Atas ialah kandungan terperinci Penyelesaian Bahasa Python Saya kepada Task Nested Array daripada The Weekly Challenge. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!