Project Euler にチャレンジ:Problem 55 PHPでの解答

← Problem 54  Problem 56 →
<?php

$answer = 9999;
for($i = 1 ; $i < 10000 ; $i++)
{
	$tmp = $i;
	for($num = 0 ; $num < 50 ; $num++)
	{
		// 値を反転させる
		$len = strlen($tmp);
		$reverse = "";
		for($j = 0 ; $j < $len ; $j++)
		{
			$reverse = $reverse.substr($tmp,$len - $j - 1,1);
		}
		$tmp += $reverse;

		// tmp2 が回文数か否かを調べる。
		if(check_kaibun($tmp))
		{
			$answer--;
			break;
		}
	}
}
echo $answer."\n";

function check_kaibun($num)
{
	$flag = true;
	$len = strlen($num);
	for($i = 0 ; $i < $len / 2 ; $i++)
	{
		if(substr($num,$i,1) != substr($num,$len - $i - 1,1))
		{
			$flag = false;
			break;
		}
	}
	return $flag;
}

?>
問題文