4. the random calculation result is 24. Everyone has played the game at around 24 o'clock. how can we use a program to calculate the result of a random combination of four numbers? For example, for the numbers 5, 5, 5, and 1, how can we get the result that everyone has played the game at 24 o'clock, so how can we use a program to calculate the number of four random operations? For example, for the numbers 5, 5, 5, and 1, how can we get the result 24? The following describes a very powerful program that can list all the combinations that meet the conditions.
"; makeValue($values); print_r($list);function makeValue($values, $set=array()) { $words = array("+", "-", "*", "/"); if(sizeof($values)==1) { $set[] = array_shift($values); return makeSpecial($set); } foreach($values as $key=>$value) { $tmpValues = $values; unset($tmpValues[$key]); foreach($words as $word) { makeValue($tmpValues, array_merge($set, array($value, $word))); } } } function makeSpecial($set) { $size = sizeof($set);if($size<=3 || !in_array("/", $set) && !in_array("*", $set)) { return makeResult($set); }for($len=3; $len<$size-1; $len+=2) { for($start=0; $start<$size-1; $start+=2) { if(!($set[$start-1]=="*" || $set[$start-1]=="/" || $set[$start+$len]=="*" || $set[$start+$len]=="/")) continue; $subSet = array_slice($set, $start, $len); if(!in_array("+", $subSet) && !in_array("-", $subSet)) continue; $tmpSet = $set; array_splice($tmpSet, $start, $len-1); $tmpSet[$start] = "(".implode("", $subSet).")"; makeSpecial($tmpSet); } } }function makeResult($set) { global $result, $list; $str = implode("", $set); @eval("$num=$str;"); if($num==$result && !in_array($str, $list)) $list[] = $str; }?>
The program running result is:
Array( [0] => (5-1/5)*5 [1] => 5*(5-1/5))
Why? For example, for the numbers 5, 5, 5, and 1, how can we get the result...