私は (楽しみのために) 回文を認識するスクリプトの作成に取り組んでいました。これまでのところ、「カヤック」、「レースカー」、「アンナ」、「パナマ運河を計画する男」などで成功しています。
余談ですが、PCRE を使用すると物事がはるかに簡単になることは理解していますが、私は PCRE に精通していません。私の主な目的の 1 つは、回文のチェックの背後にあるアルゴリズムを理解することでした。
<?php
$word = "amanaplana canalpan ama";
$space = " ";
$word_smallcase = strtolower($word);
$word_array = str_split($word_smallcase);
if(in_array($space, $word_array)){
for($m = 0; $m<count($word_array); $m = $m + 1){
if($word_array[$m] == $space)
unset($word_array[$m]);
}
}
$count = 0;
$scan_count = -1;
for($i = 0; $i < (count($word_array)/2); $i = $i + 1){
for($j = count($word_array); $j > (count($word_array)/2); $j = $j - 1){
if($word_array[$i]==$word_array[$j]){
$count = $count + 1;
break;
}
}
$scan_count = $scan_count + 1;
}
if ($count == $scan_count){
echo $word." is a palindrome";
}
else{
echo $word ." is NOT a palindrome";
}
?>
次の点についてご回答いただければ幸いです。
- 私が抱えているバグの識別。
- コードをどのように改善できるかについての推奨事項 (私の目には比較的素人っぽく見える $count や $scan_count に頼らずに物事を機能させることができれば幸いです)。
前もって感謝します。