鱼C论坛

 找回密码
 立即注册
查看: 1268|回复: 2

[已解决]编程题问题

[复制链接]
发表于 2019-12-21 12:35:35 | 显示全部楼层 |阅读模式
1鱼币
题目:
        红,黄,蓝,白,黑五支运动队参加接力比赛,有A,B,C,D,E五个小朋友猜名次,
        每个人只能猜两只运动队的名次。
        A猜:黑队第二,黄队第三
        B猜:蓝队第二,红队第四
        C猜:红队第一,白队第五
        D猜: 蓝队第三,白队第四
        E猜: 黄队第二,黑队第五
    他们每个人都猜对了一只运动队的名次,并且每队的名次只有一个人猜对。
    请判断他们个猜对那支队的名次



最佳答案
2019-12-21 12:35:36
  1. from itertools import permutations as pm
  2. for e in pm('红黄蓝白黑',5):
  3.     if ((e[1]=='黑') ^ (e[2]=='黄')) and ((e[1]=='蓝') ^ (e[3]=='红')) and\
  4.        ((e[0]=='红') ^ (e[4]=='白')) and ((e[2]=='蓝') ^ (e[3]=='白')) and \
  5.        ((e[1]=='黄') ^ (e[4]=='黑')):
  6.         print(e)
  7.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-21 12:35:36 | 显示全部楼层    本楼为最佳答案   
  1. from itertools import permutations as pm
  2. for e in pm('红黄蓝白黑',5):
  3.     if ((e[1]=='黑') ^ (e[2]=='黄')) and ((e[1]=='蓝') ^ (e[3]=='红')) and\
  4.        ((e[0]=='红') ^ (e[4]=='白')) and ((e[2]=='蓝') ^ (e[3]=='白')) and \
  5.        ((e[1]=='黄') ^ (e[4]=='黑')):
  6.         print(e)
  7.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-21 13:04:30 | 显示全部楼层
这题感觉可以去 侦探事务所 划个水。

A 和 E 算一对,之后再看。
B C D 组个轮回局。
假定 蓝队第二 为真 -> 白队第四 为真 -> 红队第一 为真 -> 蓝队第二 为真 -> 黄队第三 与 黑队第五 为真。
得:红一,蓝二,黄三,白四,黑五。
另一种思路:
A 和 E 算一对:假定 黑队第二 -> 黄队第二 证伪,反之亦然,只能 黑五,黄三。
B C D 中由上可得:蓝队第三 与 白队第五 为假,即 白队第四 与 红队第一 为真 -> 蓝队第二。
得:红一,蓝二,黄三,白四,黑五。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-4 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表