2014-10-06 84 views
-5

我正在尝试做一套猫套装,但我在计划中还是新手。计划游戏板猫

实现递归谓词优胜者?接收符号阵列 代表游戏板猫(按行排序)和标记 玩家,并确定玩家是否赢得了游戏。请记住,获奖是 必须是3个品牌在线,水平,垂直或对角线。

(winner? ‘((X X v)(v O O)(X v O)) ‘O) => #f 
(winner? ‘((X v X)(O O O)(X v O)) ‘O) => #t 
(winner? ‘((X X O)(v O O)(X v O)) ‘O) => #t 
(winner? ‘((X X O)(v O O)(O v X)) ‘O) => #t 
+0

什么是猫咪套装? – 2014-10-07 13:01:10

回答

0

在您的代码中,您不使用引号char ',而是其中一个明智的引号。它不会工作,所以你应该将其更改为'

所以你自己解释有3种方式,你可以赢得:

(define (winner? board sym) 
    (or (winner-horizontal? board sym) 
     (winner-vertical? board sym) 
     (winner-diagonal? board sym))) 

如果使用unzip,定义如下:

(define (unzip lst) 
    (apply map list lst)) 

你可以把板:

(unzip ‘((X X O)(v O O)(X v O))) ; ==> ((X v X) (X O v) (O O O)) 

这使得winner-vertical多余的,因为你可以在unzipped板使用winner-horizontal

(define (winner? board sym) 
    (or (winner-horizontal? board sym) 
     (winner-horizontal? (unzip board) sym) 
     (winner-diagonal? board sym))) 

你去那里。你现在有两个小问题需要解决。希望它能帮助你。要获得更具体的帮助,您需要自行发布一些代码(显示效果)。