/* 逻辑推理题:谁是凶手 有六个人,姓名职业如下: "小阳"是医生 ; "小刚"是医生 ; "小地"是医生 ; "小温"是律师 ; "小红"是律师 ; "小丽"是律师 ; 小阳的妹妹是小地和小红 ; 小丽的哥哥是小刚和小温 ; 小阳的女朋友是小丽 ; 这六个人里的一个人杀了其余五个人中的一个人。 (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)