每周挑战赛由 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中文网其他相关文章!