Differences between revisions 1 and 2
Revision 1 as of 2004-08-26 08:27:13
Size: 4227
Editor: GreyRoar
Comment:
Revision 2 as of 2004-08-26 08:29:52
Size: 4223
Editor: GreyRoar
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
''
Line 11: Line 11:
代码的确写得很烂,不过功能确实现了。关于代码书写与功能实现的关系,我在我的页里谈到了一下(GreyRoar)
''
代码的确写得很烂,不过功能确实现了。关于代码书写与功能实现的关系,我在我的页里谈到了一下(GreyRoar)

[python-chinese] 谁养鱼的问题. TableOfContents

GreyRoar

纯属抛砖引玉. 在啄木鸟上贴我写的这个版本之前,我也给hoxide看过,希望他能够写出更好的程序。 这个是用遍历做的,25号写的第一个版本。27号做出了一些优化,重写了mulitarg()、pailie5(),调整了一下遍历时条件判断的位置和顺序。 代码的确写得很烂,不过功能确实实现了。关于代码书写与功能实现的关系,我在我的页里谈到了一下(GreyRoar)

Einstein.py

   1 # -*- coding: cp936 -*-
   2 data=[["黄房子","蓝房子","白房子","红房子","绿房子"],["挪威人","英国人","德国人","丹麦人","瑞典人"],["DUNHILL","PRINCE","混合烟", "PALL MALL","BLUE MASTER"],["咖啡","矿泉水","","牛奶","啤酒"],["","","", "",""]]
   3 def mulitarg(x,y):
   4     return [[0 for col in range(x)] for row in range(y)]
   5 def pailie5():
   6     a=range(5)
   7     def newlist(i,oldlist):
   8         return [x for x in oldlist if x!=i]
   9     return [[x,y,z,i,m] for x,y,z,i,m in [(x,y,z,i,m) for x in a for y in newlist(x,a) for z in newlist(y,newlist(x,a)) for i in newlist(z,newlist(y,newlist(x,a))) for m in newlist(i,newlist(z,newlist(y,newlist(x,a))))]]
  10 answer=mulitarg(5,5)
  11 g=pailie5()
  12 for i in range(120):
  13     if data[0][g[i][1]]=="蓝房子":
  14         answer[0]=[data[0][g[i][0]],data[0][g[i][1]],data[0][g[i][2]],data[0][g[i][3]],data[0][g[i][4]]]
  15         if answer[0].index("白房子")-answer[0].index("绿房子")==1:
  16             for j in range(120):
  17                 if data[1][g[j][0]]=="挪威人":
  18                     answer[1]=[data[1][g[j][0]],data[1][g[j][1]],data[1][g[j][2]],data[1][g[j][3]],data[1][g[j][4]]]
  19                     if answer[0][answer[1].index("英国人")]=="红房子":
  20                         for k in range(120):
  21                             answer[2]=[data[2][g[k][0]],data[2][g[k][1]],data[2][g[k][2]],data[2][g[k][3]],data[2][g[k][4]]]
  22                             if answer[1][answer[2].index("PRINCE")]=="德国人":
  23                                 if answer[0][answer[2].index("DUNHILL")]=="黄房子":
  24                                     for l in range(120):
  25                                         if data[3][g[l][2]]=="牛奶":
  26                                             answer[3]=[data[3][g[l][0]],data[3][g[l][1]],data[3][g[l][2]],data[3][g[l][3]],data[3][g[l][4]]]
  27                                             if answer[2][answer[3].index("啤酒")]=="BLUE MASTER":
  28                                                 if answer[1][answer[3].index("")]=="丹麦人":
  29                                                     if answer[0][answer[3].index("咖啡")]=="绿房子":
  30                                                         import math
  31                                                         if int(math.fabs(answer[3].index("矿泉水")-answer[2].index("混合烟")))==1:
  32                                                             for m in range(120):
  33                                                                 answer[4]=[data[4][g[m][0]],data[4][g[m][1]],data[4][g[m][2]],data[4][g[m][3]],data[4][g[m][4]]]
  34                                                                 if answer[2][answer[4].index("")]!="混合烟":
  35                                                                     if int(math.fabs(answer[2].index("混合烟")-answer[4].index("")))==1:
  36                                                                         if int(math.fabs(answer[4].index("")-answer[2].index("DUNHILL")))==1:
  37                                                                             if answer[1][answer[4].index("")]=="瑞典人":
  38                                                                                 if answer[2][answer[4].index("")]=="PALL MALL":
  39                                                                                     for i in range(5):
  40                                                                                         print answer[i][answer[4].index("")],
  41                                                                                     print

PyProgramGames/Einstein (last edited 2009-12-25 07:16:32 by localhost)