Расставить скобки в 2:2-3:3-4:4-5:5 так, чтобы получился результат больший 39, немного попробовав, решил написать скриптик :
<?php
$str = "ABCDEFGH";
$arr = array();
$brr = array();
$ind = array();
function MakeBraces($s) {
global $arr,$brr;
if(strlen($s) <= 2) {
return $s;
}
else for($i=0;$i<strlen($s)-1;$i++) {
$s1 = substr($s,0,$i+1);
if(strlen($s1) == 2) {
$act = ord(substr($s1,0,1)) % 2 ? "/" : "-";
$s1 = substr($s1,0,1).$act.substr($s1,1,1);
}
$s2 = substr($s,$i+1);
if(strlen($s2) == 2) {
$act = ord(substr($s1,0,1)) % 2 ? "-" : "/";
$s2 = substr($s2,0,1).$act.substr($s2,1,1);
}
$act = (ord(substr($s,0,1))+$i) % 2 ? "/" : "-";
$arr[$s][] = "(($s1)$act($s2))";
$arr[$s] = array_unique($arr[$s]);
if(strlen($s) != 3) {
$brr[$s][] = "(($s1)$act($s2))";
$brr[$s] = array_unique($brr[$s]);
}
MakeBraces(substr($s,0,$i+1));
MakeBraces(substr($s,$i+1));
}
}
MakeBraces($str);
function cmp($c1, $c2) {
$a = strlen($c1);
$b = strlen($c2);
if ($a == $b) {
return 0;
}
return ($a < $b) ? 1 : -1;
}
uksort($arr, "cmp");
uksort($brr, "cmp");
$ind = array_keys($brr);
for($l = 3; $l < strlen($str); $l++) {
$crr = array(); // will store next iteration $brr[]
while (list($key,$value) = each($arr)) {
if(strlen($key) == $l) {
for($i=0;$i<count($ind);$i++) {
$count = count($brr[$ind[$i]]);
for($j=0;$j<$count;$j++) {
if(eregi("\($key\)", $brr[$ind[$i]][$j])) {
//echo $key." --- ".$brr[$ind[$i]][$j]."\n"; // finetuning
for($k=0;$k<count($arr[$key]);$k++) {
$crr[$ind[$i]][] = ereg_replace("\($key\)",$arr[$key][$k],$brr[$ind[$i]][$j]);
}
$brr[$ind[$i]][$j] = 0;
}
}
}
}
}
for($i = 0; $i<count($ind);$i++) {
for($j=0;$j<count($brr[$ind[$i]]);$j++) {
if($brr[$ind[$i]][$j] != '0') {
$crr[$ind[$i]][] = $brr[$ind[$i]][$j];
}
}
}
uksort($crr,"cmp");
$arr = array();
$arr = array_slice($crr,0);
$brr = array();
$brr = array_slice($crr,0);
}
echo "<php";
$pattern = array("A","B","C","D","E","F","G","H");
$replacement = array("2","2","3","3","4","4","5","5");
for($i=1;$i<count($final);$i++) {
$final[$i] = str_replace($pattern,$replacement,$final[$i]);
echo "echo ".$final[$i]."; echo ' ".$final[$i]."'.\"\\n\";\n";
}
echo "?>";
/* solutions :
52.5 = ((2)/(((2-3)/(((3-4)/(4))-(5)))/(5)))
-70 = ((2)/(((2-3)/((3)-((4)/(4-5))))/(5)))
-70 = ((2)/(((2-3)/((3)-((4/4)-(5))))/(5)))
50 = ((((2)/((2-3)/(3)))-(4))/((4-5)/(5)))
*/
?>
---
|