diff --git a/src/main/java/de/cas/mse/exercise/SumDigPower.java b/src/main/java/de/cas/mse/exercise/SumDigPower.java index 7e40961..f1054d7 100644 --- a/src/main/java/de/cas/mse/exercise/SumDigPower.java +++ b/src/main/java/de/cas/mse/exercise/SumDigPower.java @@ -2,40 +2,40 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.LongStream; public class SumDigPower { - public List sumDigPow(long a, long b) { + public List sumDigPow(long lowerInclusive, long upperInclusive) { + List eurekaNumbers = new ArrayList(); - List result = new ArrayList(); - - for (long i = a; i < b; i++) { - - List longs = new ArrayList(); - - String temp = Long.toString(i); - - // Split values - for (int j = 0; j < temp.length(); j++) { - longs.add(Long.valueOf(temp.substring(j, j + 1))); + // Kein Toter Code nur ne andere lösung ;-) + //var result = List.of(LongStream.range(lowerInclusive, upperInclusive+1).filter(this::isEurekaNumber)); + + for (long number = lowerInclusive; number <= upperInclusive; number++) { + if (isEurekaNumber(number)) { + eurekaNumbers.add(number); } + } - // Create sum - long sum = 0; - for (int j = 1; j <= longs.size(); j++) { - sum += Math.pow(longs.get(j - 1), j); - } + System.out.println(eurekaNumbers); + return eurekaNumbers; + } - // Test if sum is equal - if (sum == i) { - result.add(sum); - } + private boolean isEurekaNumber(long number) { + String digits = Long.toString(number); + long sum = 0; + for (int digitIndex = 0; digitIndex < digits.length(); digitIndex++) { + var digit = getDigitAtIndex(digits, digitIndex); + sum += Math.pow(digit, digitIndex + 1); } - System.out.println(result); - return result; + return sum == number; + } + private Long getDigitAtIndex(String number, int index) { + return Long.valueOf(number.substring(index, index+1)); } } \ No newline at end of file