Problem: Find the longest palindrome made from the product of two three-digit numbers.
Q: How do we work out if a number is a palindrome?
A: Convert it to a string and compare it with the reverse of the string. PHP has a built-in function, strrev, which makes this trivial.
Solution: Given the search space involved, we can simply test all the products of two three-digit numbers using a nested loop.
<?php
declare(strict_types=1);
error_reporting(E_ALL);
function is_palindrome(int $number) : bool
{
// A number is a palindrome if its string representation
// is the same when reversed
$str = strval($number);
return ($str === strrev($str));
}
$longest_palindrome = 0;
for ($i = 100; $i <= 999; $i++)
{
for ($j = 100; $j <= 999; $j++)
{
$product = $i * $j;
if (is_palindrome($product) && $product > $longest_palindrome)
{
$longest_palindrome = $product;
}
}
}
print("$longest_palindrome\n");