中国象棋将帅问题----《编程之美》读书笔记

首先将问题简化为:

A在d10,d9,d8  则B可以在e3,e2,e1,f1,f2,f3.

A在e10,e9,e8 则B可以在d3,d2,d1,f1,f2,f3

A在f10,f9,f8  则B可以在e3,e2,e1,d3,d2,d1

再次简化为:

把A,B的位置用1——9来表示。

那A   d10  e10  f10

         d9    e9    f9

         d8    e8    f8

对应:

         7    8    9

         4    5    6

         1      2     3

那B

       d3    e3    f3

       d2    e2    f2

        d1    e1    f1

对应:

       7       8       9

        4       5       6

        1       2        3

这个时候需要实现的程序是:

符合条件的输出:

A                     B

1或4或7        2,5,8,3,6,9

2或5或8              1,4,7,3,6,9

3或6或9              1,4,7,2,5,8

 

不符合条件的输出:

A                     B

1                     1,4,7

4                      1,4,7

7                      1,4,7

2                      2,5,8

。。。。。。。。。

满足以下两个条件:

A从1-9嵌套B循环1-9

A与B的数据 相隔为3 可以用%3做为区分。

程序:python

 while i > 0:
     i= i – 1
     if i/9%3 == i%9%3 :
             pass
     else:
             print “A= %d ,B = %d” %(i/9+1, i%9+1)

点赞