From bf066d4ea8270effe437cce2db6fdd0d826eee15 Mon Sep 17 00:00:00 2001 From: Arun Kishore Voleti <49097688+ArunKishoreVoleti@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:47:36 +0530 Subject: [PATCH 1/5] Add Disarium number checker implementation Introduces is_disarium_number function to check if a number is a Disarium number, including input validation and doctests for various cases. --- maths/special_numbers/disarum_number.py | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 maths/special_numbers/disarum_number.py diff --git a/maths/special_numbers/disarum_number.py b/maths/special_numbers/disarum_number.py new file mode 100644 index 000000000000..df4761e36cc1 --- /dev/null +++ b/maths/special_numbers/disarum_number.py @@ -0,0 +1,48 @@ +""" +A number n is said to be a Disarium number if +the sum of its digits powered to their respective positions equals the number itself. + +Examples of Disarium Numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, ... +""" + +def is_disarium_number(number: int) -> bool: + """ + This function takes an integer number as input. + Returns True if the number is a Disarium number. + + >>> is_disarium_number(-1) + False + >>> is_disarium_number(0) + False + >>> is_disarium_number(1) + True + >>> is_disarium_number(89) + True + >>> is_disarium_number(135) + True + >>> is_disarium_number(175) + True + >>> is_disarium_number(518) + True + >>> is_disarium_number(598) + True + >>> is_disarium_number(123) + False + >>> is_disarium_number(89.0) + Traceback (most recent call last): + ... + TypeError: Input value of [number=89.0] must be an integer + """ + if not isinstance(number, int): + msg = f"Input value of [number={number}] must be an integer" + raise TypeError(msg) + if number < 1: + return False + + digits = str(number) + total = sum(int(digit) ** (idx + 1) for idx, digit in enumerate(digits)) + return total == number + +if __name__ == "__main__": + import doctest + doctest.testmod() From d6cd57535ab1cb38dfcd687c357ce7e4039c6bb3 Mon Sep 17 00:00:00 2001 From: ArunKishoreVoleti Date: Thu, 16 Oct 2025 10:17:59 +0000 Subject: [PATCH 2/5] updating DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 0f9859577493..41f68f74914e 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -777,6 +777,7 @@ * [Bell Numbers](maths/special_numbers/bell_numbers.py) * [Carmichael Number](maths/special_numbers/carmichael_number.py) * [Catalan Number](maths/special_numbers/catalan_number.py) + * [Disarum Number](maths/special_numbers/disarum_number.py) * [Hamming Numbers](maths/special_numbers/hamming_numbers.py) * [Happy Number](maths/special_numbers/happy_number.py) * [Harshad Numbers](maths/special_numbers/harshad_numbers.py) From 164a2244918ad7b27bde1729862d34eec7bcd7e0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:18:55 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/disarum_number.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/maths/special_numbers/disarum_number.py b/maths/special_numbers/disarum_number.py index df4761e36cc1..2799a261e773 100644 --- a/maths/special_numbers/disarum_number.py +++ b/maths/special_numbers/disarum_number.py @@ -5,6 +5,7 @@ Examples of Disarium Numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, ... """ + def is_disarium_number(number: int) -> bool: """ This function takes an integer number as input. @@ -43,6 +44,8 @@ def is_disarium_number(number: int) -> bool: total = sum(int(digit) ** (idx + 1) for idx, digit in enumerate(digits)) return total == number + if __name__ == "__main__": import doctest + doctest.testmod() From 18ea4bf38247e63900c14c911e3be4a46149dd7c Mon Sep 17 00:00:00 2001 From: cclauss Date: Mon, 14 Sep 2026 04:07:40 +0000 Subject: [PATCH 4/5] updating DIRECTORY.md --- DIRECTORY.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 3eacb3b69426..f4e3bf188be5 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -522,6 +522,7 @@ ## [Fractals](fractals) * [Barnsley Fern](fractals/barnsley_fern.py) + * [Hilbert Curve](fractals/hilbert_curve.py) * [Julia Sets](fractals/julia_sets.py) * [Koch Snowflake](fractals/koch_snowflake.py) * [Mandelbrot](fractals/mandelbrot.py) @@ -699,7 +700,7 @@ * [Gradient Descent](machine_learning/gradient_descent.py) * [K Means Clust](machine_learning/k_means_clust.py) * [K Medoids](machine_learning/k_medoids.py) - * [K Nearest Neighbours](machine_learning/k_nearest_neighbours.py) + * [K Nearest Neighbors](machine_learning/k_nearest_neighbors.py) * [Linear Discriminant Analysis](machine_learning/linear_discriminant_analysis.py) * [Linear Regression](machine_learning/linear_regression.py) * [Linear Regression Vectorized](machine_learning/linear_regression_vectorized.py) @@ -710,9 +711,11 @@ * Lstm * [Lstm Prediction](machine_learning/lstm/lstm_prediction.py) * [Mfcc](machine_learning/mfcc.py) + * [Mini Batch Gradient Descent](machine_learning/mini_batch_gradient_descent.py) * [Multilayer Perceptron Classifier](machine_learning/multilayer_perceptron_classifier.py) * [Polynomial Regression](machine_learning/polynomial_regression.py) * [Principle Component Analysis](machine_learning/principle_component_analysis.py) + * [Q Learning](machine_learning/q_learning.py) * [Random Forest Classifier](machine_learning/random_forest_classifier.py) * [Random Forest Regressor](machine_learning/random_forest_regressor.py) * [Scoring Functions](machine_learning/scoring_functions.py) @@ -742,6 +745,7 @@ * [Binary Multiplication](maths/binary_multiplication.py) * [Binomial Coefficient](maths/binomial_coefficient.py) * [Binomial Distribution](maths/binomial_distribution.py) + * [Binomial Expansion](maths/binomial_expansion.py) * [Ceil](maths/ceil.py) * [Chebyshev Distance](maths/chebyshev_distance.py) * [Check Polygon](maths/check_polygon.py) @@ -784,6 +788,7 @@ * [Interquartile Range](maths/interquartile_range.py) * [Is Int Palindrome](maths/is_int_palindrome.py) * [Is Ip V4 Address Valid](maths/is_ip_v4_address_valid.py) + * [Is Ipv6 Address Valid](maths/is_ipv6_address_valid.py) * [Is Square Free](maths/is_square_free.py) * [Jaccard Similarity](maths/jaccard_similarity.py) * [Joint Probability Distribution](maths/joint_probability_distribution.py) From c535bd7a1ccf2f95101cbb75b764799390d81d4b Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 14 Sep 2026 06:12:54 +0200 Subject: [PATCH 5/5] Clarify Disarium number definition in comments Updated the definition of a Disarium number for clarity. --- maths/special_numbers/disarum_number.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/maths/special_numbers/disarum_number.py b/maths/special_numbers/disarum_number.py index 2799a261e773..4f7389ef2274 100644 --- a/maths/special_numbers/disarum_number.py +++ b/maths/special_numbers/disarum_number.py @@ -1,8 +1,10 @@ """ -A number n is said to be a Disarium number if -the sum of its digits powered to their respective positions equals the number itself. +A number n is said to be a Disarium number if the sum of its digits raised to +their respective positions equals the number itself. Examples of Disarium Numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, ... + +https://rosettacode.org/wiki/Disarium_numbers """