refactor: cleanup DudeneyNumber
(#5156)
This commit is contained in:
parent
cf6c87c35c
commit
319d5143cc
@ -41,7 +41,6 @@ com.thealgorithms.dynamicprogramming.WineProblem=UselessParentheses
|
||||
com.thealgorithms.maths.BinomialCoefficient=UselessParentheses
|
||||
com.thealgorithms.maths.Complex=UselessParentheses
|
||||
com.thealgorithms.maths.DistanceFormulaTest=UnnecessaryFullyQualifiedName
|
||||
com.thealgorithms.maths.DudeneyNumber=UselessParentheses
|
||||
com.thealgorithms.maths.FibonacciJavaStreamsTest=BigIntegerInstantiation
|
||||
com.thealgorithms.maths.Gaussian=UselessParentheses
|
||||
com.thealgorithms.maths.GcdSolutionWrapper=UselessParentheses
|
||||
|
@ -11,28 +11,18 @@ public final class DudeneyNumber {
|
||||
}
|
||||
|
||||
// returns True if the number is a Dudeney number and False if it is not a Dudeney number.
|
||||
public static boolean isDudeney(int n) {
|
||||
public static boolean isDudeney(final int n) {
|
||||
if (n <= 0) {
|
||||
throw new IllegalArgumentException("Input must me positive.");
|
||||
}
|
||||
// Calculating Cube Root
|
||||
int cube_root = (int) (Math.round((Math.pow(n, 1.0 / 3.0))));
|
||||
final int cube_root = (int) Math.round(Math.pow(n, 1.0 / 3.0));
|
||||
// If the number is not a perfect cube the method returns false.
|
||||
if (cube_root * cube_root * cube_root != n) {
|
||||
return false;
|
||||
}
|
||||
int sum_of_digits = 0; // Stores the sums of the digits of the entered number
|
||||
int temp = n; // A temporary variable to store the entered number
|
||||
// Loop to calculate the sum of the digits.
|
||||
while (temp > 0) {
|
||||
// Extracting the Last digit of the number
|
||||
int rem = temp % 10;
|
||||
|
||||
// Calculating the sum of digits.
|
||||
sum_of_digits += rem;
|
||||
|
||||
// Removing the last digit
|
||||
temp /= 10;
|
||||
}
|
||||
|
||||
// If the cube root of the number is not equal to the sum of its digits, we return false.
|
||||
return cube_root == sum_of_digits;
|
||||
return cube_root == SumOfDigits.sumOfDigits(n);
|
||||
}
|
||||
}
|
||||
|
@ -1,18 +1,28 @@
|
||||
package com.thealgorithms.maths;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
|
||||
class DudeneyNumberTest {
|
||||
@ParameterizedTest
|
||||
@CsvSource({"1", "512", "4913", "5832", "17576", "19683"})
|
||||
void positiveDudeneyBase10Power3(final int n) {
|
||||
assertTrue(DudeneyNumber.isDudeney(n));
|
||||
}
|
||||
|
||||
@Test
|
||||
void isDudeney() {
|
||||
final int validDudeneyNumber = 512;
|
||||
final int invalidDudeneyNumber = 125;
|
||||
@ParameterizedTest
|
||||
@CsvSource({"2", "19", "21", "125", "27", "343", "729", "19682", "19684"})
|
||||
void negativeDudeneyBase10Power3(final int n) {
|
||||
assertFalse(DudeneyNumber.isDudeney(n));
|
||||
}
|
||||
|
||||
assertTrue(() -> DudeneyNumber.isDudeney(validDudeneyNumber));
|
||||
assertFalse(() -> DudeneyNumber.isDudeney(invalidDudeneyNumber));
|
||||
@ParameterizedTest
|
||||
@CsvSource({"0", "-1"})
|
||||
void throwsInputLessThanOne(final int n) {
|
||||
assertThrows(IllegalArgumentException.class, () -> DudeneyNumber.isDudeney(n));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user