list - 方案满屋戳功能

标签 list scheme lisp racket

我正在尝试在 Scheme 中定义一个函数来确定一个五元素列表是否包含满屋(即分别有 3 个元素相同和另外 2 个元素相同)。我脑子里有大纲,虽然我弄乱了语法。我正在使用 and, let, to try and do this.输入是一个列表(5 个元素,编号 1-13),输出是一个 bool 值。这是我目前所拥有的:

(define is-full-house?
  (lambda (listy)
    ;; Sort listy from smallest to greatest
    (let ((sorted-list (sort listy <=)))
        (and 
         ((= (first sorted-list) (second sorted-list)) (= (fourth sorted-list) (fifth sorted-list))))
        (or
         ((= third fourth)) (= first third)))))

感谢帮助

最佳答案

您很接近 - 但请确保您首先了解 满屋,以及在这种情况下使用 bool 连接符的正确方法。试试这个:

(define is-full-house?
  (lambda (listy)
    (let ((sorted-list (sort listy <=)))
      (or
       (and
        (= (first sorted-list) (second sorted-list) (third sorted-list))
        (= (fourth sorted-list) (fifth sorted-list)))
       (and
        (= (first sorted-list) (second sorted-list))
        (= (third sorted-list) (fourth sorted-list) (fifth sorted-list)))))))

关于list - 方案满屋戳功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090572/

相关文章:

scheme - 使用抽象列表函数的列表幂集

emacs - 如何在 Lisp In A Box 中更改 emacs 配置

方案参数检查器错误处理

scheme - 方案功能(DrRacket)

lisp - 从文件中返回单词列表

recursion - 第 i 个和第 i+1 个元素循环的惯用 clojure

list - R:如何使用 R 从 txt 文件中获取信息

c# - 合理数量的 List <string> 元素?

c# - 不使用 IComparable<T> 查找最大/最小元素

python - 循环打印重复天数