【问题标题】:Scheme game board cat计划游戏板猫
【发布时间】:2014-12-01 07:27:14
【问题描述】:

我正在尝试做猫套装,但我还是 Scheme 的新手。

实现递归谓词获胜者?接收符号数组 表示游戏板猫(按行排序)和标记 玩家,并确定玩家是否赢得了比赛。记住胜利是 必须是 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

【问题讨论】:

    标签: list matrix scheme cat


    【解决方案1】:

    在您的代码中,您没有使用引号字符',而是使用智能引号之一。它不起作用,因此您应该将其更改为'

    所以你解释一下,你可以通过 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)))
    

    给你。你现在有两个小问题要解决。希望它对您有所帮助。要获得更具体的帮助,您需要自己发布一些代码(展示努力)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2013-05-12
      • 1970-01-01
      相关资源
      最近更新 更多