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