每週挑戰賽由 Mohammad S. Anwar 組織,是一場友好的競賽,開發者透過解決兩個任務進行競爭。它鼓勵所有語言和級別的開發者透過學習、分享和娛樂來參與。
每週挑戰賽的任務 1:美麗排列邀請開發者從正整數產生的所有排列中找出美麗排列 排列的數量。
在這篇文章中,我討論並提出我的解決方案,任務 1:美麗的安排,並結束一個簡短的結論。
每週挑戰 300 截止日期為 2024 年 12 月 23 日星期日 23:59(英國時間)。為了避免偏見,請考慮在比賽後閱讀這篇文章。
給你一個正整數,$int。
編寫一個腳本來傳回您可以從 $int 建構的漂亮排列的數量。
如果對於每個 i (1
- permutation[i] 能被 i 整除
- i 可被排列[i]整除
每週挑戰300,任務1:美麗的佈置
範例 1 和 2 展示了給定輸入的預期輸出。
Input: $n = 2 Output: 2
對於 n = 2 且有 i 個整數 (1
排列 (1, 2) 是一個美麗的排列,因為它的所有元素都符合第一個條件:
排列(2, 1)也是一個漂亮的排列,因為它的所有元素都符合第一個或第二個條件:
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
我的不優雅且簡單的解決方案利用了兩個函數generate_permutations和count_beautiful_arrangements。
generate_permutations 對於參數 n,傳回 1
count_beautiful_permutations 對於 permutations 可迭代 perms 參數,傳回與美麗排列條件相符的 permutations 總數。
在這篇文章中,我討論了任務 1:美麗的安排,並提出了我的解決方案。我的「不優雅且不複雜」的解決方案有效,但它還有很大的改進空間。
以上是我的Python語言解決方案來完成每週挑戰的美麗安排的詳細內容。更多資訊請關注PHP中文網其他相關文章!