Python趣味编程(一)破解刘谦的“读心术”(原创)

上周看到刘谦在表演“读心术”。

表演方式如下:

1. 让嘉宾心里默想一个数字,在0-63之间。

2. 依次给嘉宾看六张牌,每张牌上有若干个数字(我猜想是32个)。

3. 让嘉宾回答,心理默想的数字有没有在扑克牌上。

4. 六张牌看完,刘谦写出一个数字,然后让嘉宾说出心里默想的数。

5. 吻合,掌声雷动。

我看了之后,挺晕的……看来术业有专攻……这么简单的二进制问题,也能拿来做魔术表演。

于是写了个程序来模拟刘谦的魔术,变给老婆看……

1 import sys
2
3 NUM =6
4 LINE_NUM =70
5
6 maxMargin =1<< NUM
7 numList = range(0, maxMargin)
8
9 resultNum = 0
10
11  for x in range(0, NUM):
12 print"="* LINE_NUM
13 tmpSet = set([(tmpNum |1<< x) for tmpNum in numList])
14 for (tmpNum, tmpCount) in zip(list(tmpSet), range(1, len(tmpSet) +1)):
15 sys.stdout.write("%d\t"% tmpNum)
16 if tmpCount %8== 0:
17 print""
18 print"="* LINE_NUM
19 print""
20
21 tmpStr = raw_input("Is the number in list? n(y/n)?\n")
22 tmpStr = tmpStr.strip()
23 if (tmpStr =="y"):
24 resultNum +=1<< x
25
26  print"The number is: %d"% resultNum

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzjxx.html