私はお互いに人の配列を照合しています。彼らは自分自身と一致することはできませんし、各人は他の人と一致することができます。私はこれを取り組んだが、端のケースに遭遇した。一致している人物が自分とまだ一致していない唯一の人物である場合、私たちは立ち往生しています。ギフト寄付のために人の配列を照合する、このエッジケースを扱う方法
例:
$names = array('Dad','Mom','Harrald','Yu','Sandra','Dave', 'Andy & Kim');
$drawn = array();
$tn = count($names)-1;
$i = mt_rand(0, $tn);
foreach ($names as $name) {
while($name == $names[$i] || in_array($names[$i], $drawn)) {
$i = mt_rand(0, $tn);
}
echo $name. ' has ' . $names[$i].'<br />';
array_push($drawn, $names[$i]);
}
これは作り出すことができる:
お父さんはサンドラ
ママゆう
Harraldはデイブ
...などを持っている持っている、など
ときに問題があります'Andy & Kim'がまだに追加されていない唯一の要素である場合、配列の最後の要素に到達します。 'Andy & Kim'配列の場合、 'Andy & Kim'を自分自身にマッチさせることができないため、端点ケースが発生します。私の例では、これはループ中に閉じ込められ、最終的にタイムアウトになることがあります。あなたはこれをどう対処しますか(これは私のおかげで、私のお母さんがマッチアップスクリプトを使って、これが潜在的な問題であることを理解したことに気づきました)。
ああ、このようなパターンを実装するより良い方法は、最も興味深いものです。どうも!
明らかに。私のポイントは、どうやって対処するのですか?私は誰かがこれが宿題だと思うだろうと思っていました...笑...私はまだ若くて、まだ学生であることを望みます。 – Lothar
これは本当にあなたがこの問題にどう対処したいかの問題です。しかし、あなたが意味することは、あなたがすでに他の人と一緒に拾った人のどれに過負荷をかけたらいいですか?あなたはそれら3つを取って、それらからリングを作ることができます。それとも、大事なことをするのか。私のポイント。これはプログラミングの問題ではなく、要件の問題です。 – DampeS8N
マークは、リングを行う方法を持って、正しい。 – DampeS8N