/* 逻辑推理题:谁是凶手
有六个人,姓名职业如下:
"小阳"是医生 ;
"小刚"是医生 ;
"小地"是医生 ;
"小温"是律师 ;
"小红"是律师 ;
"小丽"是律师 ;
小阳的妹妹是小地和小红 ;
小丽的哥哥是小刚和小温 ;
小阳的女朋友是小丽 ;
这六个人里的一个人杀了其余五个人中的一个人。
(1)如果凶手和受害者有亲缘关系,则凶手是位男性 ;
(2)如果凶手和受害者没有亲缘关系,则凶手是位医生 ;
(3)如果凶手和受害者职业相同,则受害者是位男性 ;
(4)如果凶手和受害者没有相同工作,则受害者是位女性 ;
(5)如果凶手和受害者性别不同,则凶手是位律师 ;
(6)如果凶手和受害者性别相同,则受害者是位医生。
; Java编程语言实现:https://blog.csdn.net/weixin_30755393/article/details/98193424
*/
main:
person:={}
person[1] :={姓名: "小阳",职业: "医生",亲属:{},性别: "男"}
person[2] :={姓名: "小刚",职业: "医生",亲属:{},性别: "男"}
person[3] :={姓名: "小地",职业: "医生",亲属:{},性别: "女"}
person[4] :={姓名: "小温",职业: "律师",亲属:{},性别: "男"}
person[5] :={姓名: "小红",职业: "律师",亲属:{},性别: "女"}
person[6] :={姓名: "小丽",职业: "律师",亲属:{},性别: "女"}
person[1].亲属.小地 := person.小地
person[1].亲属.小红 := person.小红
for key, obj in person[1].亲属
obj["亲属"]["小阳"] := person[1]
person[6].亲属.小刚:= person.小刚
person[6].亲属·小温:= person.小温
for key, obj in person[6].亲属
obj["亲属"] ["小丽"] := person[6]
j := 0
for i, obj in person
{
killer := obj
Loop, % person.count() - i
{
j := i + a_index
victim := person[j]
if isTrue(killer, victim)
msgbox % "killer【杀手】:" killer.姓名 "`nvictim【受害者】:" victim.姓名
}
}
return
isTrue(killer, victim) {
if killer.亲属.haskey(victim.姓名)
if not killer.性别 == "男"
return false
if not killer.亲属.haskey(victim.姓名)
if not killer.职业 =="医生"
return false
if (killer.职业 == victim.职业)
if not victim.性别 == "男"
return false
if not killer.职业 == victim.职业
if not victim.性别 == "女"
return false
if not killer.性别 == victim.性别
if not killer.职业 == "律师"
return false
if (killer.性别 == victim.性别)
if not victim.职业 =="医生"
return false
return true
}
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)