ホームページ >バックエンド開発 >PHPチュートリアル >PHP数字ゲーム計算24アルゴリズム
アルゴリズムのアイデア: 各数値を独立した数式として扱います。式の間に句読点を追加して、合計 4 つの式間の組み合わせを作成できます。
コードは次のとおりです。コードは次のとおりです:
/**
* 24 メーカー
* @バージョン 1.0.0
* @author laruence
* @copyright (c) 2009 http://www.laruence.com
*/
class TwentyFourCal {
public $needle = 24;
function TwentyFourCal( ) {
}
プライベート関数 Notice($mesg) {
var_dump($mesg);
}
/**
* ユーザー入力メソッドを取得します
*/
パブリック関数 Calculate($operants = array()) {
try {
$this ->search($operants, 4);
} catch (Exception $e) {
$this->notice($e->getMessage());
$this->notice; ('計算できません!');
return;
/**
* 24 ポイント アルゴリズムの PHP 実装を探しています
*/
プライベート関数 search($expressions, $level) {
if ($level == 1) {
$ result = 'return ' . $expressions[0] . ';';
if ( abs(eval($result) - $this->needle) <= $this->precision) {
throw new Exception( $expressions [0]);
}
}
for ($i=0;$ifor ($j=$i+1;$j$ expLeft = $expressions[$i];
$expRight = $expressions[$j] = $expressions[$level - 1] = '(' . $expLeft . ' + ' . ')'
$this->search($expressions, $level - 1); . $expRight . ')';
$this->search($expressions, $level - 1) = '(' . $expLeft . ' . $expRight . ')' ;
$this->search($expressions, $level - 1);
$expressions[$i] = '(' . $expRight . ' - ' . $expLeft . ')'; search($expressions, $level - 1);
if ($expLeft != 0) {
$expressions[$i] = '(' . $expRight . ' / ' . $expLeft . ')'; ->search($expressions, $level - 1);
}
if ($expRight != 0) {
$expressions[$i] = '(' . $expLeft . ' / ' . $expRight . ') ';
$this->search($expressions, $level - 1);
$expressions[$i] = $expLeft;
}
}
false を返す ;
}
function __destruct() {
}
}
/* デモ */
$tf = new TwentyFourCal();
$tf->calculate( array(4,8,8,8) );
? >
上記は PHP デジタル ゲーム計算 24 アルゴリズムの内容です。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。