Square digit chains

AUTHOR

Moritz Lenz

https://projecteuler.net/problem=92

A number chain is created by continuously adding the square of the digits in a number to form a new number until it has been seen before.

For example,

44 → 32 → 13 → 10 → 1 → 1
85 → 89 → 145 → 42 → 20 → 4 → 16 → 37 → 58 → 89

Therefore any chain that arrives at 1 or 89 will become stuck in an endless loop. What is most amazing is that EVERY starting number will eventually arrive at 1 or 89.

How many starting numbers below ten million will arrive at 89?

use v6;



unless @*ARGS {
    say 'WARNING';
    say 'This is going to take *really* long (order of magnitude: 30 h) with';
    say 'the default number (1e7)';
    say 'To run it for a small number, simply supply that number';
    say 'on the command line.';
}

my %ser;
%ser{1}  = 1;
%ser{89} = 89;

my @squares = map { $_ * $_ }, 0..9;

sub ser($i is copy) {
    return %ser{$i} if %ser{$i}:exists;
    my @to_update;
    while !(%ser{$i}:exists) {
        @to_update.push($i);
        $i = [+] $i.split('').map: { $_ * $_ };
    }
    my $s = %ser{$i};
    %ser{$_} = $s for @to_update;
    return $s;
}

my $c = 0;
my $target = @*ARGS[0] // 1e7;
say "running up to $target";
for 1..($target-1) {
    .say if $_ % ($target / 10).Int == 0;
    ++$c if ser($_) == 89;
}
say "Result: $c";

# vim: expandtab shiftwidth=4 ft=perl6

See Also

prob001-cspencer.raku

Multiples of 3 and 5

prob001-eric256.raku

Multiples of 3 and 5

prob001-grondilu.raku

Multiples of 3 and 5

prob001-hexmode.raku

Multiples of 3 and 5

prob001-unobe.raku

Multiples of 3 and 5

prob002-eric256.raku

Even Fibonacci numbers

prob002-gerdr.raku

Even Fibonacci numbers

prob002-hexmode.raku

Even Fibonacci numbers

prob003-eric256.raku

Largest prime factor

prob003-gerdr.raku

Largest prime factor

prob003-hexmode.raku

Largest prime factor

prob003-lanny.raku

Largest prime factor

prob004-unobe.raku

Largest palindrome product

prob004-xfix.raku

Largest palindrome product

prob005-unobe.raku

Smallest multiple

prob005-xfix.raku

Smallest multiple

prob006-polettix.raku

Sum square difference

prob007-polettix.raku

10001st prime

prob008-duff.raku

Largest product in a series

prob008-duff2.raku

Largest product in a series

prob009-gerdr-feeds.raku

Special Pythagorean triplet

prob009-gerdr.raku

Special Pythagorean triplet

prob009-polettix.raku

Special Pythagorean triplet

prob010-polettix.raku

Summation of primes

prob011-moritz.raku

Largest product in a grid

prob012-polettix.raku

Highly divisible triangular number

prob013-grondilu.raku

Large sum

prob014-felher.raku

Longest Collatz sequence

prob015-felher.raku

Lattice paths

prob016-grondilu.raku

Power digit sum

prob017-duff.raku

Number letter counts

prob018-felher.raku

Maximum path sum I

prob019-grondilu.raku

Counting Sundays

prob020-grondilu.raku

Factorial digit sum

prob021-gerdr.raku

Amicable numbers

prob022-grondilu.raku

Names scores

prob023-shlomif.raku

Non-abundant sums

prob024-moritz.raku

Lexicographic permutations

prob025-polettix.raku

1000-digit Fibonacci number

prob026-shlomif.raku

Reciprocal cycles

prob027-shlomif.raku

Quadratic primes

prob028-shlomif.raku

Number spiral diagonals

prob029-gerdr.raku

Distinct powers

prob029-polettix.raku

Distinct powers

prob031-shlomif.raku

Coin sums

prob033-andreoss.raku

Digit cancelling fractions

prob034-quinny.raku

Digit factorials

prob036-xenu.raku

Double-base palindromes

prob038-andreoss.raku

Pandigital multiples

prob039-quinny.raku

Integer right triangles

prob041-heyajulia-alternative.raku

Pandigital Prime

prob041-heyajulia.raku

Pandigital Prime

prob042-shlomif.raku

Coded triangle numbers

prob047-gerdr.raku

Distinct primes factors

prob052-duff.raku

Permuted multiples

prob053-duff.raku

Combinatoric selections

prob053-gerdr.raku

Combinatoric selections

prob054-andreoss.raku

Poker hands

prob055-shlomif.raku

Lychrel numbers

prob056-shlomif.raku

prob059-andreoss.raku

XOR decryption

prob063-moritz.raku

Powerful digit counts

prob063-polettix.raku

Powerful digit counts

prob065-andreoss.raku

Convergents of e

prob065-grondilu.raku

prob066-andreoss.raku

Diophantine equation

prob067-felher.raku

Maximum path sum II

prob080-andreoss.raku

Square root digital expansion

prob081-moritz.raku

Path sum: two ways

prob089-andreoss.raku

Roman numerals

prob097-andreoss.raku

Large non-Mersenne prime

prob098-andreoss.raku

Anagramic squares

prob099-andreoss.raku

Largest exponential

README.md

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.

Built with Podlite — the markup and publishing tools behind this site.