Largest palindrome product

From Rosetta Code
Revision as of 09:34, 3 November 2021 by Thundergnat (talk | contribs) (→‎{{header|Raku}}: Add a)
Largest palindrome product is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task


Task description is taken from Project Euler (https://projecteuler.net/problem=4)
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.

Raku

<lang perl6>use Prime::Factor; (^6).map: -> $oom {

   LOOP: for (+(1 ~ (0 x $oom)) .. +(9 ~ (9 x $oom))).reverse.map({ +($_ ~ .flip) }) -> $pal {
       for my @factors = $pal.&divisors.grep: {.chars == ($oom + 1)} {
           next unless $pal div $_ ∈ @factors;
           say "Largest palindromic product of two {$oom + 1}-digit integers: $_ × {$pal div $_} = $pal" and last LOOP;
       }
   }

}</lang>

Largest palindromic product of two 2-digit integers: 91 × 99 = 9009
Largest palindromic product of two 3-digit integers: 993 × 913 = 906609
Largest palindromic product of two 4-digit integers: 9901 × 9999 = 99000099
Largest palindromic product of two 5-digit integers: 99681 × 99979 = 9966006699
Largest palindromic product of two 6-digit integers: 999999 × 999001 = 999000000999


Ring

<lang ring> load "stdlib.ring" see "working..." + nl

prodOld = 0 limitStart = 100 limitEnd = 999

for n = limitStart to limitEnd

   for m = limitStart to limitEnd
       prodNew = n*m
       if prodNew > prodOld and palindrome(string(prodNew))
          prodOld = prodNew
          first = n
          second = m
       ok
   next

next

see "The largest palindrome is:" + nl see "" + first + " * " + second + " = " + prodOld + nl see "done..." + nl </lang>

Output:
working...
The largest palindrome is:
913 * 993 = 906609
done...