2014-10-06 80 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))) 

你去那裏。你現在有兩個小問題需要解決。希望它能幫助你。要獲得更具體的幫助,您需要自行發佈一些代碼(顯示效果)。