Project Euler meets Powershell - 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.
#>




# 998001 - so what's the largest palindrome number less than this one - then check if it's a product of 3-digit numbers

function ispalindrome {
    [cmdletbinding()]
    param(
        [int] $number
    )
    process{
        $digits = @()
        $next_int = $number
        while ($next_int -gt 9) {
           $digit = $next_int % 10
           $digits = $digits + $digit
           $next_int =   ($next_int / 10) - (($next_int % 10)/10)
           #(99099 / 10) - ((99099 % 10)/10)
        }
        $digits = $digits + $next_int
        #$digits
        #$digits.Equals([array]::Reverse($digits))    
        #$digits.Equals($digits[($digits.Length - 1)..0])
        for($i = 0; $i -ile $digits.count; $i += 1) {
            #Write-Host $digits[$i]
            #Write-Host $digits[-($i+1)]
            if ($digits[$i] -ne $digits[-($i+1)]) {
                #Write-Host "Value $($digits[$i]) at position $i does not match value $($digits[-($i-1)]) at position -$($i+1) [NB: Going through the array backwards]"
                return $false 
            } 
        }
        return $true
    }
}

#ispalindrome 9909
#ispalindrome 99099

# largest product of 3-digit numbers
$max = 999 * 999
for ($i = $max; $i -igt 0; $i -= 1) {
    if (ispalindrome $i) {
        Write-Verbose "Checking the palindrome $i"
        # is it divisable by a 3 digit number
        for($j = 999; $j -igt 100 ; $j -= 1){
            Write-Verbose "Checking $i % $j ($($i % $j))"
            if ($i % $j -eq 0) {
                Write-Verbose "Checking the product $j"
                # it is divisable by 3 digit number - if it's a 3 digit number return $i and $j
                if (($i/$j -gt 99) -and ($i/$j -lt 1000)) {
                    Write-host $i
                    Write-Host $j
                    return $true
                }
            }
        }
    }
}

Powershell ProjectEuler