S先生与P先生谜题,谜题,http://baike
S先生与P先生谜题,谜题,http://baike
http://baike.baidu.com/view/578227.htm
美国斯坦福大学的麦卡锡提出的
设有两个自然数X、Y,2<=X<=Y<=99,S先生知道这两个数的和S,P先生知道这两个数的积P,他们二 人进行了如下对话:
S:我确信你不知道这两个数是什么,但我也不知道。
P: 一听你说这句话,我就知道这两个数是什么了。
S: 我也是,现在我也知道了。
现在你能通过他们的会话推断出这两个数是什么吗?
def gatherBy(seq, f): d = {} for x in seq: d.setdefault(f(x), []).append(x) return dpool = [(a, b) for a in range(2, 98 + 1) for b in range(2, a + 1)]Sums = gatherBy(pool, lambda x: x[0] + x[1])Prods = gatherBy(pool, lambda x: x[0] * x[1])def MrP_dont_know(p): return len(Prods[p]) != 1def MrS_dont_know(s): return len(Sums[s]) != 1def MrS_know_MrP_doesnt_know(s): return all([MrP_dont_know(a * b) for a, b in Sums[s]])def MrP_now_knows(p): return len([(a, b) for a, b in Prods[p] if MrS_know_MrP_doesnt_know(a + b)]) == 1def MrS_knows_MrP_now_know(s): return len([(a, b) for a, b in Sums[s] if MrP_now_knows(a * b)]) == 1for a, b in pool: s = a + b p = a * b if MrP_dont_know(p) and MrS_dont_know(s) and MrS_know_MrP_doesnt_know(s)\\ and MrP_now_knows(p) and MrS_knows_MrP_now_know(s): print a, b#result : 13 4#该片段来自于http://byrx.net
相关内容
- python搜索指定目录的代码演示,python演示,#-----------
- python自定义isnumber函数判断字符串是否为数字,pythoni
- Python动态生成中文验证码,python中文验证码,# -*- codin
- 网络小说下载器,,只能用于飞库网,改动字符
- Learn Python By Practice — list,pythonpractice,import sysde
- Python矩阵乘法,python矩阵,def matrixMu
- IP地址与Bigint转换,IP地址Bigint转换,import sysde
- python抓取网页及网页上所有连接的演示代码,python抓取
- 批量下载图片,图片,#!/usr/bin/e
- Learn Python By Practice — string,pythonpractice,虽然一直都蛮
评论关闭