function Reverse-Integer
{
param([string]$str)
for ($i = $str.ToString().Length - 1; $i -ge 0; $i--)
{
$c = $c + ($str.ToString().Substring($i,1))
}
[int]$c
}
$big = 0
for($x=100;$x -le 999;$x++)
{
for($y=100;$y -le 999;$y++)
{
$xy = $x*$y
$yx = Reverse-Integer $xy
if ($yx -eq $xy)
{
if ($xy -gt $big) {$big=$xy}
}
}
}
$big
This one takes a long time to run. If anyone has any ideas on how to refactor this, please share!
1 comment:
Hi Wes,
Thanks a lot for your great blog posts. I know this one is quite old but anyway here is my approach:
function Get-ProdPalindrome{
#brute force all possible products into array
$arrProds=
for($factor1=999;$factor1 -ge 10;$factor1--){
for($factor2=999;$factor2 -ge 100;$factor2--){
$factor1*$factor2
}
}
#sort array in descending order
[array]::Sort($arrProds)
[array]::Reverse($arrProds)
#check for each product whether it is a Palindrome break after first hit
foreach ($currProd in $arrProds){
$arrProduct = [char[]] $currProd.ToString()
[array]::reverse($arrProduct)
$reverse = [string]::join("",$arrProduct)
if ($currProd -eq [int]$reverse)
{
return $currProd
break
}
}
}
Get-ProdPalindrome
Dirk
Post a Comment