Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

順列。並べ方・作り方の場合の数。(Python 3: reversed(), アンパック。sympy.functions.combinatorial.numbers, nP())

使用するライブラリ

SymPy

Python 3 コード

permutations4.py

#!/usr/bin/env python3


"""(docstring)
"""


from sympy.functions.combinatorial.numbers import nP


def print_math_problems():
    """(docstring)
    """
    print("""問題:

以下の各問いに答えよ。

(1) 6 人の人間から 3 人の人間を選んで 1 列に並べるとき、
    並べ方の場合の数を求めよ。

(2) 1, 2, 3, 4, 5, 6, 7, 8 の 8 つの数字から
    4 つの数字を選んで 4 桁の数を作るとき、
    作り方の場合の数を求めよ。
""")


def solutions():
    """(docstring)
    """
    print('解答例:\n')

    # (1)
    # 逆順のリストを作成しておく。数式を作成するために使用する。
    rev_n_list1 = list(reversed(range(4, 7)))
    #
    print('(1) 6P3 = {} * {} * {} = {} 通り。\n'.format(*rev_n_list1, nP(6, 3)))

    # (2)
    # 逆順のリストを作成しておく。数式を作成するために使用する。
    rev_n_list2 = list(reversed(range(5, 9)))
    #
    print('(2) 8P4 = {} * {} * {} * {} = {} 通り。'.format(*rev_n_list2, nP(8, 4)))


if __name__ == '__main__':
    print_math_problems()
    print('-'*79)
    solutions()

出力

$ python3 permutations4.py
問題:

以下の各問いに答えよ。

(1) 6 人の人間から 3 人の人間を選んで 1 列に並べるとき、
    並べ方の場合の数を求めよ。

(2) 1, 2, 3, 4, 5, 6, 7, 8 の 8 つの数字から
    4 つの数字を選んで 4 桁の数を作るとき、
    作り方の場合の数を求めよ。

-------------------------------------------------------------------------------
解答例:

(1) 6P3 = 6 * 5 * 4 = 120 通り。

(2) 8P4 = 8 * 7 * 6 * 5 = 1680 通り。

参考文献 (数式を参考)

関連過去記事

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com