Own digits power sum: Difference between revisions

m
→‎{{header|Wren}}: Changed to Wren S/H
(New post.)
m (→‎{{header|Wren}}: Changed to Wren S/H)
(One intermediate revision by one other user not shown)
Line 1,098:
long maximum = number * 10;
int lastDigit = 0;
int digitSumsum = 0;
while ( number < maximum ) {
if ( lastDigit == 0 ) {
digitSumsum = String.valueOf(number).chars()
.chars().map(Character::getNumericValue).map( i -> powers.get(i) ).sum();
.map( i -> powers.get(i) )
.sum();
} else if ( lastDigit == 1 ) {
digitSumsum += 1;
} else {
digitSumsum += powers.get(lastDigit) - powers.get(lastDigit - 1);
}
if ( digitSumsum == number ) {
System.out.println(number);
if ( lastDigit == 0 ) {
Line 1,119 ⟶ 1,117:
number += 10 - lastDigit;
lastDigit = 0;
} else if ( digitSumsum > number ) {
number += 10 - lastDigit;
lastDigit = 0;
Line 2,337 ⟶ 2,335:
{{libheader|Wren-math}}
Includes some simple optimizations to try and quicken up the search. However, getting up to N = 9 still took a little over 4 minutes on my machine.
<syntaxhighlight lang="ecmascriptwren">import "./math" for Int
 
var powers = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Line 2,406 ⟶ 2,404:
{{libheader|Wren-seq}}
Astonishing speed-up. Runtime now only 0.5 seconds!
<syntaxhighlight lang="ecmascriptwren">import "./seq" for Lst
 
var maxBase = 10
9,482

edits