原题目:有一个人在一个森林里迷路了,他想看一下时间,可是又发现自己没带表。恰好他看到前面有两个小女孩在玩耍,于是他决定过去打听一下。更不幸的是这两个小女孩有一个毛病,姐姐上午说真话,下午就说假话,而妹妹与姐姐恰好相反。但他还是走近去他问她们:“你们谁是姐姐?”胖的说:“我是。”瘦的也说:“我是。”他又问:现在是什么时候?胖的说:“上午。”“不对”,瘦的说:“应该是下午。”这下他迷糊了,到底他们说的话是真是假?
直接上代码吧:
<?php
/*************************************************************
有一个人在一个森林里迷路了,他想看一下时间,可是又发现自己没带表。
恰好他看到前面有两个小女孩在玩耍,于是他决定过去打听一下。
更不幸的是这两个小女孩有一个毛病,
姐姐上午说真话,下午就说假话,而妹妹与姐姐恰好相反。
但他还是走近去他问她们:“你们谁是姐姐?”胖的说:“我是。”瘦的也说:“我是。”
他又问:现在是什么时候?胖的说:“上午。”“不对”,瘦的说:“应该是下午。”
这下他迷糊了,到底他们说的话是真是假?
************************************************************/
/**
* 时间
* am 上午
* pm 下午
*/
$TIME = ['am', 'pm'];
/**
* 小女孩类型
* fat 胖的
* thin 瘦的
*/
$GIRL = ['fat' , 'thin'];
/**
* 小女孩身份对应的说话真假规则
* 姐姐上午说真话,下午就说假话,而妹妹与姐姐恰好相反。
*/
$GIRL_TALK_RULE = ['older'=>['am'=>true, 'pm'=>false], 'younger'=>['am'=>false, 'pm'=>true]];
/**
* 两女孩说的话
*/
$ANSWER = ['fat'=>['girl'=>'older','time'=>'am'],'thin'=>['girl'=>'older','time'=>'pm']];
/**
* 判断谁说的是真的
* 根据 时间[am,pm] 分别判断女孩的身份
*/
function who_is_true()
{
global $TIME, $GIRL, $ANSWER;
$res = [];
foreach ($TIME as $time) {
foreach ($GIRL as $girl) {
$check_res = check_girl_talk($time, $girl);
// 根据$check_res确定女孩身份和时间
if ($check_res && $ANSWER[$girl]['time'] == $time)
$res = $ANSWER[$girl];
}
}
return $res;
}
/**
* $time = 'am' || 'pm'
* $role = 'fat' || 'thin'
* 根据时间$time 判断女孩说的话是否与她的身份对应的说话规则相符
*/
function check_girl_talk($time, $role)
{
global $ANSWER, $GIRL_TALK_RULE;
// 女孩自己说的 身份
$girl = $ANSWER[$role]['girl'];
// 当前时间 是否是 女孩回答的时间
$check_time = $time == $ANSWER[$role]['time'];
// 当前时间 对应 女孩说话的 真假规则
$answer_rule = $GIRL_TALK_RULE[$girl][$time];
// 判断 女孩说的话 是否与 她说话的 真假规则相符
return $check_time == $answer_rule ? true : false;
}
$res = who_is_true();
echo "<pre>";
print_r($res);
结果:
Array
(
[girl] => older
[time] => am
)
原题目:有一个人在一个森林里迷路了,他想看一下时间,可是又发现自己没带表。恰好他看到前面有两个小女孩在玩耍,于是他决定过去打听一下。更不幸的是这两个小女孩有一个毛病,姐姐上午说真话,下午就说假话,而妹妹与姐姐恰好相反。但他还是走近去他问她们:“你们谁是姐姐?”胖的说:“我是。”瘦的也说:“我是。”他又问:现在是什么时候?胖的说:“上午。”“不对”,瘦的说:“应该是下午。”这下他迷糊了,到底他们说的话是真是假?
直接上代码吧:
<?php
/*************************************************************
有一个人在一个森林里迷路了,他想看一下时间,可是又发现自己没带表。
恰好他看到前面有两个小女孩在玩耍,于是他决定过去打听一下。
更不幸的是这两个小女孩有一个毛病,
姐姐上午说真话,下午就说假话,而妹妹与姐姐恰好相反。
但他还是走近去他问她们:“你们谁是姐姐?”胖的说:“我是。”瘦的也说:“我是。”
他又问:现在是什么时候?胖的说:“上午。”“不对”,瘦的说:“应该是下午。”
这下他迷糊了,到底他们说的话是真是假?
************************************************************/
/**
* 时间
* am 上午
* pm 下午
*/
$TIME = ['am', 'pm'];
/**
* 小女孩类型
* fat 胖的
* thin 瘦的
*/
$GIRL = ['fat' , 'thin'];
/**
* 小女孩身份对应的说话真假规则
* 姐姐上午说真话,下午就说假话,而妹妹与姐姐恰好相反。
*/
$GIRL_TALK_RULE = ['older'=>['am'=>true, 'pm'=>false], 'younger'=>['am'=>false, 'pm'=>true]];
/**
* 两女孩说的话
*/
$ANSWER = ['fat'=>['girl'=>'older','time'=>'am'],'thin'=>['girl'=>'older','time'=>'pm']];
/**
* 判断谁说的是真的
* 根据 时间[am,pm] 分别判断女孩的身份
*/
function who_is_true()
{
global $TIME, $GIRL, $ANSWER;
$res = [];
foreach ($TIME as $time) {
foreach ($GIRL as $girl) {
$check_res = check_girl_talk($time, $girl);
// 根据$check_res确定女孩身份和时间
if ($check_res && $ANSWER[$girl]['time'] == $time)
$res = $ANSWER[$girl];
}
}
return $res;
}
/**
* $time = 'am' || 'pm'
* $role = 'fat' || 'thin'
* 根据时间$time 判断女孩说的话是否与她的身份对应的说话规则相符
*/
function check_girl_talk($time, $role)
{
global $ANSWER, $GIRL_TALK_RULE;
// 女孩自己说的 身份
$girl = $ANSWER[$role]['girl'];
// 当前时间 是否是 女孩回答的时间
$check_time = $time == $ANSWER[$role]['time'];
// 当前时间 对应 女孩说话的 真假规则
$answer_rule = $GIRL_TALK_RULE[$girl][$time];
// 判断 女孩说的话 是否与 她说话的 真假规则相符
return $check_time == $answer_rule ? true : false;
}
$res = who_is_true();
echo "<pre>";
print_r($res);
结果:
Array ( [girl] => older [time] => am )