Skip to content

Instantly share code, notes, and snippets.

@jaredcacurak
Created February 24, 2011 02:37
Show Gist options
  • Select an option

  • Save jaredcacurak/841655 to your computer and use it in GitHub Desktop.

Select an option

Save jaredcacurak/841655 to your computer and use it in GitHub Desktop.
A Groovy + Java solution for Project Euler - Problem 30
(1000..200000).inject 0, { sum, number ->
numberMuncher = new NumberMuncher(number)
digitsToFifthPower = numberMuncher.digitsToThePowerOf(5)
sumOfDigitsToTheFifthPower = digitsToFifthPower.sum()
sum += (number == sumOfDigitsToTheFifthPower) ? number : 0
}
class NumberMuncher {
private final Integer value;
NumberMuncher(Integer value) {
this.value = value;
}
List<Integer> digitsToThePowerOf(int power) {
List<Integer> listOfPowers = new ArrayList<Integer>();
List<Integer> digits = toDigits();
for (Integer digit : digits) {
Double powerOf = Math.pow(digit, power);
listOfPowers.add(powerOf.intValue());
}
return listOfPowers;
}
List<Integer> toDigits() {
List<Integer> listOfDigits = new ArrayList<Integer>();
char[] characters = characterArrayOfValue();
for (Character c : characters) {
listOfDigits.add(Character.getNumericValue(c));
}
return listOfDigits;
}
char[] characterArrayOfValue() {
String string = this.value.toString();
return string.toCharArray();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment