Own digits power sum: Difference between revisions

Content added Content deleted
(New post.)
Line 992: Line 992:


See [[Narcissistic_decimal_number#J]]
See [[Narcissistic_decimal_number#J]]

=={{header|Java}}==
<syntaxhighlight lang="java">
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public final class OwnDigitsPowerSum {

public static void main(String[] args) {
List<Integer> powers = IntStream.rangeClosed(0, 9).boxed().map( i -> i * i ).collect(Collectors.toList());
System.out.println("Own digits power sums for N = 3 to 9 inclusive:");

for ( int n = 3; n <= 9; n++ ) {
for ( int d = 2; d <= 9; d++ ) {
powers.set(d, powers.get(d) * d);
}
long i = (long) Math.pow(10, n - 1);
long max = i * 10;
int lastDigit = 0;
int sum = 0;
List<Integer> digits;
while ( i < max ) {
if ( lastDigit == 0 ) {
digits = String.valueOf(i).chars().map(Character::getNumericValue).boxed().toList();
sum = digits.stream().map( d -> powers.get(d) ).mapToInt(Integer::intValue).sum();
} else if ( lastDigit == 1 ) {
sum += 1;
} else {
sum += powers.get(lastDigit) - powers.get(lastDigit - 1);
}
if ( sum == i ) {
System.out.println(i);
if ( lastDigit == 0 ) {
System.out.println(i + 1);
}
i += 10 - lastDigit;
lastDigit = 0;
} else if ( sum > i ) {
i += 10 - lastDigit;
lastDigit = 0;
} else if ( lastDigit < 9 ) {
i += 1;
lastDigit += 1;
} else {
i += 1;
lastDigit = 0;
}
}
}
}

}
</syntaxhighlight>
{{ out }}
<pre>
Own digits power sums for N = 3 to 9 inclusive:
153
370
371
407
1634
8208
9474
54748
92727
93084
548834
1741725
4210818
9800817
9926315
24678050
24678051
88593477
146511208
472335975
534494836
912985153
</pre>


=={{header|jq}}==
=={{header|jq}}==