CodeWars 05: Factorial
3054 ワード
問題の説明
Your task is to write function factorial
せいぞうこうじょう
せいげんじょうけん
None
I/O例
None
に答える
from functools import reduce
def factorial(n):
return reduce(lambda x, y : x * y , [v for v in range(1, n+1)]) if n > 0 else 1
Factoryって何ですか?指定された正の整数より大きいか小さいかのすべての数値の積.
和だとSUMだと簡単に解決できるけど困ったのは和「積み重ね」というキーワードを思い浮かべると
Reduceを思い出すreduceはmapやfilter関数のように所定のリストや文字列などに順次「条件」を適用できる関数です.しかし、mapがそれぞれに適用され、filterが所定の条件に合致する子供だけを選択すると、reduceは適用後に蓄積される.
だから
別の解釈
def factorial(n):
j = 1
for i in range(1, n+1):
j *= i
return j
モジュールを必要とせずにfor loopを使用して問題を解決します.from math import factorial
驚くべきことに、Pythonでは工場もmathモジュールに含まれています.(私も初めて知りました)与えられた関数も階乗であり,個々に実装する必要はなく,インポートするだけでよい.
簡単すぎるでしょう?🤗
Reference
この問題について(CodeWars 05: Factorial), 我々は、より多くの情報をここで見つけました https://velog.io/@keywookim/CodeWars-05-Factorialテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol