diff --git a/algorithm/sorting/bucket_sort.py b/algorithm/sorting/bucket_sort.py index 56a2a37f..9572d5b4 100644 --- a/algorithm/sorting/bucket_sort.py +++ b/algorithm/sorting/bucket_sort.py @@ -7,6 +7,7 @@ # Urutkan masing-masing bucket. # Gabungkan semua bucket menjadi satu list terurut. + def bucket_sort(collection: list[float]) -> list[float]: """ contoh diff --git a/algorithm/sorting/circle_sort.py b/algorithm/sorting/circle_sort.py index d58c7460..c0a13839 100644 --- a/algorithm/sorting/circle_sort.py +++ b/algorithm/sorting/circle_sort.py @@ -7,6 +7,7 @@ # Jika elemen kiri lebih besar, tukar dengan elemen kanan. # Lanjutkan ke tengah array, lalu lakukan rekursi. + def circle_sort(collection: list[int]) -> list[int]: """ contoh diff --git a/other/kaprekar_number.py b/other/kaprekar_number.py new file mode 100644 index 00000000..c6d9c4f6 --- /dev/null +++ b/other/kaprekar_number.py @@ -0,0 +1,61 @@ +# mengecek apakah bilangan apakah bilangan itu masuk kaprekar +# https://en.wikipedia.org/wiki/Kaprekar_number +import math + + +def kaprekar_number(number: int) -> str: + """ + Angka kaprekar adalah angka yang yang di kuadratkan, + dan di pisahmenjadi dua bagian dan di jumlahkan lagi + maka akat menjadi angka itu kembali. + + >>> kaprekar_number(45) + 'Angka Kaprekar' + >>> kaprekar_number(9) + 'Angka Kaprekar' + >>> kaprekar_number(5) + 'Bukan Angka Kaprekar' + >>> kaprekar_number(10) + 'Bukan Angka Kaprekar' + + """ + benar, bukan = "Angka Kaprekar", "Bukan Angka Kaprekar" + if number == 1: + return benar + + square_number = number * number + + cout_d = 0 + while not square_number == 0: + cout_d += 1 + square_number = square_number // 10 + + square_number = number * number + + r_digits = 0 + while r_digits < cout_d: + r_digits += 1 + eq_parts = math.pow(10, r_digits) + + if eq_parts == number: + continue + + jumlah = square_number // eq_parts + square_number % eq_parts + if jumlah == number: + return benar + + return bukan + + +def main(args=None): + import doctest + + doctest.testmod() + + +if __name__ == "__main__": + # sampel case + print(kaprekar_number(45)) # Angka Kaprekar + print(kaprekar_number(9)) # Angka Kaprekar + print(kaprekar_number(5)) # Bukan Angka Kaprekar + print(kaprekar_number(10)) # Bukan Angka Kaprekar diff --git a/scripts/build_directory_md.py b/scripts/build_directory_md.py index fe214bf3..1a53a309 100755 --- a/scripts/build_directory_md.py +++ b/scripts/build_directory_md.py @@ -8,13 +8,13 @@ def good_file_paths(top_dir: str = ".") -> Iterator[str]: """ - Fungsi menghasilkan path file yang memenuhi kriteria tertentu + Fungsi menghasilkan path file yang memenuhi kriteria tertentu dari direktori yang diberikan. Parameter: - - top_dir (str): direktori root tempat pencarian dimulai. + - top_dir (str): direktori root tempat pencarian dimulai. Default adalah direktori saat ini ("."). - + Return: - (Iterator[str]): path file (relatif terhadap `top_dir`)