该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//考察1:读懂题
//考察2:有漏洞,不说小循环循环几次,考验逻辑能力
//考察3:三种情况如何判断,对php基本函数掌握情况
//考察4:ajax数据传输
//考察5:前台页面渲染颜色
//只用 php写了计算部分,后边颜色渲染ajax以后自己js写吧
api(5);
//$for_num 大N,用户要循环的次数
function api($for_num){
$for_num = 5;//循环次数N
$return =array();
$return['arr'] = array();//存储每次结果
$return['R'] = 0;//最终结果
$return['w1'] = 0;//最终w1次数
$return['e'] = 0;//最终e1次数
$return['l1'] = 0;//最终l1次数
$return['empty'] = 0;//执行时前三种情况落空次数
for($i=0;$i
$re = judge();
switch ($re['state']) {
case 'w1':
$return['w1']+=1;
break;
case 'e':
$return['e']+=1;
break;
case 'l1':
$return['l1']+=1;
break;
default :
$return['empty']+=1;
break;
}
$return['arr'][] = $re;
}
$return['R'] = $return['w1'] * 4
+$return['l1'] * (-8);
var_dump('R:',$return['R']);
var_dump('w1:',$return['w1']);
var_dump('e:',$return['e']);
var_dump('l1:',$return['l1']);
var_dump('empty:',$return['empty']);
var_dump($return['arr']);
}
//执行函数-进行判断
function judge(){
$return = array();
$tmp_arr = make_rand_arr();
$return['arr'] = $tmp_arr;
//1.判断w1情况
$re = judge_w1($tmp_arr);
if($re) {
$return['state'] ='w1';
return $return;
}
//2.判断E
$re = judge_e($tmp_arr);
if($re) {
$return['state'] ='e';
return $return;
}
//3.判断L1
$re = judge_l($tmp_arr);
if($re) {
$return['state'] ='l1';
return $return;
}
//4.都没命中,返回false
$return['state'] =false;
return $return;
}
//子函数:制造随机函数
function make_rand_arr(){
$w = 0;
$j = 100; //每一轮产生随机数的次数
$tmp_arr = array();
$i = 0;
while($i < $j){
$rand_num = mt_rand(0,1);
if($rand_num == 1){
$w -= 1;
}else{
$w += 1;
}
$tmp_arr[] = $w;//归组
$i+=1;
}
return $tmp_arr;
}
//子函数:判断w1
function judge_w1($tmp_arr)
{
$key = array_search('4',$tmp_arr);
if($key !== false){
//4以前的所有数字
$tmp_arr = array_slice($tmp_arr,0,$key);
if(!in_array('-6',$tmp_arr)){
//如果4以前没有出现过6
return true;
}
}
return false;
}
//子函数:判断e
function judge_e($tmp_arr)
{
$key = array_search('-6',$tmp_arr);
if($key !== false){
//-6以前的所有数字
$tmp_arr_pre = array_slice($tmp_arr,0,$key);
//-6以后的所有数字
$tmp_arr_bottom = array_slice($tmp_arr,$key+1,count($tmp_arr));
if( !in_array('4',$tmp_arr_pre) ){
//如果前边没出现过4
//后数组没出现小于-6
foreach($tmp_arr_bottom as $k=>$v){
if($v
return false;
}
}
return true; //只有出现-6,前无4,后都大于-6,true
}
}
return false; //如果没有出现-6,返回false
}
//子函数:判断l
function judge_l($tmp_arr)
{
$key = array_search('-6',$tmp_arr);
if($key !== false){
//-6以前的所有数字
$tmp_arr_pre = array_slice($tmp_arr,0,$key);
//-6以后的所有数字
$tmp_arr_bottom = array_slice($tmp_arr,$key+1,count($tmp_arr));
if( !in_array('4',$tmp_arr_pre) && in_array('-8',$tmp_arr_bottom) && !in_array('0',$tmp_arr_bottom) ){
//如果之前没出现4,之后没出现0,之后出现了-8
return true;
}
}
return false; //如果没有出现-6,返回false
}
?>