1
나는 여기 내가 원하는 것을 가까이 갔다. 나는 그들이 말한 결과와 같거나 그 반대이면 결과를 표시하지 않는 논리 문제를 겪었다. 두 개의 다른 주 이름의 아나그램 인 두 개의 미국 주 이름의 아나그램을 찾고 있습니다. 솔루션을 찾았습니다. 이제는 디스플레이 문제 일뿐입니다. 나는 생각합니다. 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다.anagram 결과와 같거나 그 반대 인 문자열을 제거하는 방법은 무엇입니까?
<?php
ini_set('max_execution_time', 300);
function anagramOf ($array, $start, $len)
{
global $i;
$word = implode ("", $array);
$i = ++$i;
printf ("%'.-20d%'.20s%s", $i, ucfirst($word), "<BR> \n");
}
function sortstr ($astring)
{
global $word, $s, $l;
$s = strtolower ($astring);
$array = preg_split ('//', $s, -1, PREG_SPLIT_NO_EMPTY);
sort ($array);
$s = implode ("", $array);
}
function search ($aword,$pairs)
{
global $len, $word, $s, $i;
$size = count ($pairs);
for ($k = 0; $k < $size; $k++)
{
$pairs[$k] = chop ($pairs[$k]);
if (strlen ($pairs[$k]) == $len)
{
$l = $pairs[$k];
sortstr ($l);
$ls = $s;
if (!strcmp ($ls, $word))
{
$i = ++$i;
printf ("%'.-20d%'.20s%s", $i, ucfirst ($l), "</br</br>");
}
}
}
}
$states1 = array("Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming");
$states2 = array();
$states2 = $states1;
$pairs = array();
$countS1 = count($states1);
$countS2 = count($states2);
$countPr;
$i=0;
foreach($states1 as $s1array)
{
$j=0;
foreach($states2 as $s2array)
{
$pairs[]=array($s1array => $s2array);
$j++;
}
$i++;
}
$pCountPair = count($pairs);
$newpairs = array();
$l=0;
foreach($pairs as $p => $pairs2)
{
foreach($pairs2 as $name1 => $name2)
{
$newpairs[]=$name1.$name2;;
}
$l++;
}
$p2count = count($newpairs);
#echo 'p2 = '.$p2count.'</br>';
for($r = 0; $r < $p2count; $r++)
{
$word = $newpairs[$r];
echo "Anagrams of <b>".ucfirst ($word)."</b> :\n<BR>\n";
$na = $word;
sortstr ($word);
$word = $s;
$len = strlen ($word);
$i = 0;
search ($word,$newpairs);
}
if ($i == 0)
echo "Can't find any anagram of <B>".ucfirst($na)."</B> in the pairs array.</br></br>";
?>
. 다른 경기는 어떨까요? 너무 일찍 멈춘 것 같습니다. 예를 들면 ... South Dakota & North Carolina? –
예 사우스 다코타/노스 캐롤라이나 - 노스 다코타/사우스 캐롤라이나는 anagram입니다 – chrislondon
다시 한번 감사드립니다. 나는 모든 가능성의 결과를 얻으 려 노력하면서 (원래의 문자열을 포함하고 역순으로), 배열에 배열을 넣은 다음 중복을 필터링했다. 말할 것도없이, 나는 아직 일하도록하지 않았다. –