From 7ddc6fac81fc66691b9d7d3062161fae5a53106a Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Fri, 9 Jan 2026 13:58:07 +0700 Subject: [PATCH 1/2] feat: menambahkan algoritma baru --- math/kombinasi_permutasi.py | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 math/kombinasi_permutasi.py diff --git a/math/kombinasi_permutasi.py b/math/kombinasi_permutasi.py new file mode 100644 index 00000000..33caec05 --- /dev/null +++ b/math/kombinasi_permutasi.py @@ -0,0 +1,57 @@ +# https://en.wikipedia.org/wiki/Combination +# https://en.wikipedia.org/wiki/Permutation + +def faktorial(n : int) -> int: + """ + Fungsi untuk menghitung faktorial + + >>> faktorial(5) + 120 + """ + if n <= 0: + return ValueError("Nilai tidak boleh kurang dari nol") + else: + f = 1 + for i in range(1, n + 1): + f *= i + return f + + +def kombinasi(n : int, r : int) -> int: + """ + Fungsi untuk kalkulasi kombinasi + + >>> kombinasi(5, 2) + 10.0 + """ + if n <= 0 or r <= 0: + return ValueError("Nilai tidak boleh kurang dari nol") + else: + penyebut = faktorial(n) + pembilang = faktorial(r) * faktorial(n - r) + return penyebut / pembilang + + +def permutasi(n : int, r : int) -> int: + """ + Fungsi untuk kalkulasi permutasi + + >>> permutasi(6, 2) + 30.0 + """ + if n <= 0 or r <= 0: + return ValueError("Nilai tidak boleh kurang dari nol") + else: + penyebut = faktorial(n) + pembilang = faktorial(n - r) + return penyebut / pembilang + + +def main(args=None): + import doctest + + doctest.testmod() + + +if __name__ == "__main__": + main() From 0fad1164bed2a489a0319047f31c659bac62fb83 Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Fri, 9 Jan 2026 14:10:32 +0700 Subject: [PATCH 2/2] fix: memperbaiki test --- math/kombinasi_permutasi.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/math/kombinasi_permutasi.py b/math/kombinasi_permutasi.py index 33caec05..9a289d8d 100644 --- a/math/kombinasi_permutasi.py +++ b/math/kombinasi_permutasi.py @@ -1,7 +1,8 @@ # https://en.wikipedia.org/wiki/Combination # https://en.wikipedia.org/wiki/Permutation -def faktorial(n : int) -> int: + +def faktorial(n: int) -> int: """ Fungsi untuk menghitung faktorial @@ -17,7 +18,7 @@ def faktorial(n : int) -> int: return f -def kombinasi(n : int, r : int) -> int: +def kombinasi(n: int, r: int) -> int: """ Fungsi untuk kalkulasi kombinasi @@ -32,7 +33,7 @@ def kombinasi(n : int, r : int) -> int: return penyebut / pembilang -def permutasi(n : int, r : int) -> int: +def permutasi(n: int, r: int) -> int: """ Fungsi untuk kalkulasi permutasi