ホームページ > バックエンド開発 > Python チュートリアル > Weekly Challenge の美しいアレンジメントをタスク化するための私の Python 言語ソリューション

Weekly Challenge の美しいアレンジメントをタスク化するための私の Python 言語ソリューション

Barbara Streisand
リリース: 2024-12-27 02:40:10
オリジナル
181 人が閲覧しました

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

1. はじめに

Mohammad S. Anwar が主催する Weekly Challenge は、開発者が 2 つのタスクを解決することで競うフレンドリーなコンテストです。学習、共有、楽しみを通じて、あらゆる言語とレベルの開発者の参加を奨励します。

タスク 1: ウィークリー チャレンジの美しい配置では、開発者は、正の整数から生成されたすべての順列の中から美しく配置された順列の数を見つけます。

この投稿では、タスク 1: 美しい配置について説明し、その解決策を提示し、短い結論で終わります。

ウィークリー チャレンジ 300 の締め切りは、2024 年 12 月 23 日日曜日 23:59 (英国時間) です。偏見を避けるために、競技後にこの投稿を読むことを検討してください。

2. 課題 1: 美しいアレンジメント

正の整数 $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 で割り切れるため、permutation[1] = 1 は最初の条件を満たします。
  • i = 2 では、2 は 2 で割り切れるため、permutation[2] = 2 は最初の条件を満たします。

permutation(2, 1) も、そのすべての要素が最初または 2 番目の条件のいずれかに一致するため、美しい配置です。

  • i = 1 では、2 は 1 で割り切れるため、permutation[1] = 2 は最初の条件を満たします。
  • i = 2 では、2 は 1 で割り切れるため、permutation[2] = 1 は 2 番目の条件を満たします。

例 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 という 2 つの関数を利用しています。

generate_permutations は、パラメーター n に対して、1

  • iterable = list(range(1, n 1)) は、1
  • permutations(iterable) は itertools モジュールからインポートされ、iterable のすべての順列を生成します。

count_beauty_permutations は、permutations の反復可能な perms パラメーターに対して、美しい配置条件に一致するパーマの順列の総数を返します。

  • perm in... の外側のループは、各置換を繰り返します。
  • パーマは美しいアレンジメントである(is_beauty_arr = True)という前提から始まります。
    • value_index, value in... の内部ループは、perm の各要素が条件 1 または条件 2 のいずれかに一致するかどうかをチェックします。
      • すべての要素がいずれかの条件に一致する場合、パーマは美しいアレンジメントとしてカウントされます。
      • それ以外の場合、条件 1 にも条件 2 にも一致しない要素がある場合、is_Beautiful_arr は False に設定され、ループが早期に中断され、パーマは美しいアレンジメントとしてカウントされません。

4. 結論

この投稿では、タスク 1: 美しい配置について説明し、私の解決策を紹介しました。私の「洗練されておらず洗練されていない」ソリューションは機能しますが、改善の余地はかなりあります。

以上がWeekly Challenge の美しいアレンジメントをタスク化するための私の Python 言語ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート