首页 > 后端开发 > Python教程 > 我的Python语言解决方案来完成每周挑战的美丽安排

我的Python语言解决方案来完成每周挑战的美丽安排

Barbara Streisand
发布: 2024-12-27 02:40:10
原创
171 人浏览过

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

一、简介

每周挑战赛由 Mohammad S. Anwar 组织,是一场友好的竞赛,开发者通过解决两个任务进行竞争。它鼓励所有语言和级别的开发者通过学习、分享和娱乐来参与。

每周挑战赛的任务 1:美丽排列邀请开发者从正整数生成的所有排列中找出美丽排列 排列的数量。

在这篇文章中,我讨论并提出我的解决方案,任务 1:美丽的安排,并结束一个简短的结论。

每周挑战 300 截止日期为 2024 年 12 月 23 日星期日 23:59(英国时间)。为了避免偏见,请考虑在比赛后阅读这篇文章。

2. 任务一:美丽的布置

给你一个正整数,$int。

编写一个脚本来返回您可以从 $int 构造的漂亮排列的数量。

如果对于每个 i (1

  1. permutation[i] 能被 i 整除
  2. i 可被排列[i]整除

每周挑战300,任务1:美丽的布置

示例 1 和 2 展示了给定输入的预期输出。

实施例1

Input: $n = 2
Output: 2
登录后复制

对于 n = 2 且有 i 个整数 (1

排列 (1, 2) 是一个美丽的排列,因为它的所有元素都符合第一个条件:

  • 当 i = 1 时,排列[1] = 1 满足第一个条件,因为 1 可以被 1 整除。
  • 在 i = 2 时,排列[2] = 2 满足第一个条件,因为 2 可以被 2 整除。

排列(2, 1)也是一个漂亮的排列,因为它的所有元素都符合第一个或第二个条件:

  • 当 i = 1 时,排列[1] = 2 满足第一个条件,因为 2 可以被 1 整除。
  • 当 i = 2 时,permutation[2] = 1 满足第二个条件,因为 2 可以被 1 整除。

实施例2

Input: $n = 1
Output: 1
登录后复制

实施例3

Input: $n = 10
Output: 700
登录后复制

3.我对任务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
登录后复制

我的不优雅且简单的解决方案利用了两个函数generate_permutations和count_beautiful_arrangements。

generate_permutations 对于参数 n,返回 1

  • iterable = list(range(1, n 1)) 生成一个整数列表,其中 1
  • permutations(iterable),从 itertools 模块导入,生成 iterable 的所有排列。

count_beautiful_permutations 对于 permutations 可迭代 perms 参数,返回与美丽排列条件匹配的 permutations 总数。

  • perm in... 的外循环迭代每个排列。
  • 它首先假设烫发是一种美丽的安排(is_beautiful_arr = True)。
    • value_index, value in... 的内部循环检查 perm 的每个元素是否匹配条件 1 或条件 2。
      • 如果所有元素都满足任一条件,烫发就被视为一种美丽的安排。
      • 否则,如果任何元素既不匹配条件1也不匹配条件2,则is_beautiful_arr设置为False,循环提前中断,并且perm不被算作漂亮的排列。

4. 结论

在这篇文章中,我讨论了任务 1:美丽的安排,并提出了我的解决方案。我的“不优雅且不复杂”的解决方案有效,但它还有很大的改进空间。

以上是我的Python语言解决方案来完成每周挑战的美丽安排的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板