今日桁のランダムな「パターンロック」シーケンスを生成します3行3列の1-9キー成る-lock:今は、私の友人は、私はまだ解決できない課題を提起した
---------------------------
| |
| 1 2 3 |
| |
| 4 5 6 |
| |
| 7 8 9 |
| |
---------------------------
は、長さが与えられると、我々は、これらの基準を使用して、提供される長さの桁のランダムな、非反復シーケンスを生成する必要があります。
Aは、配列は、例えば、(長さ:8)隣接する数字(おそらく斜め)を介してのみ向かう特定の方向/パターンに従わなければならない生成:最初の行の数字が続いてはならない
1 2 4 5 6 7 8 9
、12569874を第3行からの桁、およびその逆の場合もある。列についても同様です。例えば、図1は、8に続くことができない、および6を容易にAndroidのパターンロックシステムから
ここ発生いくつかの例であることができる複数の基準を推測することができる。4.
を続けることができません長さ9のための配列:5分の12369874、142536987など、および長さ= 6:987532など
Iはrand()
でこれを行うことを試みた:
$chars = "123456789";
$length = 9;
$clen = strlen($chars)-1;
$id = '';
for ($i = 0; $i < $length; $i++) {
$id .= $chars[mt_rand(0,$clen)];
}
return ($id);
しかし、まだ運がありません...
どうすればこの問題を解決できますか?
上で実行を参照してください、あなたはもっと自分の基準を説明できますか? – Manav
あなたは基準を念頭に置いているように思えますし、最初に長引かせて、ブルートフォースアプローチで試みるべきです。あなたが探している結果を何らかの手段で得ることができます。あなたはそれを行うことができるはずです。すべてのルールが一致するまで、基準を繰り返しループしてください。 – IncredibleHat
@ Manav:ありがとう4返信、更新された質問を確認してください –