【问题标题】:Comparing lists in Lisp比较 Lisp 中的列表
【发布时间】:2010-11-25 03:17:56
【问题描述】:

我自己可以想出一些方法来做到这一点,但我觉得有一种更简单的,也许是内置的方法来做到这一点。我想看看是否有任何两个列表共享一个元素。这是我目前正在处理的两个列表:

((0 1 2) (3 4 5) (6 7 8) (0 3 6) (1 3 7) (2 4 8) (0 4 8) (2 4 6))

((0 1 7) (0 1 6) (0 1 3) (0 3 7) (0 3 6) (0 6 7) (1 3 7) (1 3 6) (1 6 7) (3 6 7)) 

由于两个列表都包含(1 3 7),我想比较这些列表以返回T

有没有比设置一对DOLISTs 更好的方法来做到这一点?

【问题讨论】:

    标签: lisp common-lisp clisp


    【解决方案1】:

    INTERSECTION怎么样?

    (defvar a '((0 1 2) (3 4 5) (6 7 8) (0 3 6) (1 3 7) (2 4 8) (0 4 8) (2 4 6)))
    => A
    (defvar b '((0 1 7) (0 1 6) (0 1 3) (0 3 7) (0 3 6) (0 6 7) (1 3 7) (1 3 6) (1 6 7) (3 6 7)))
    => B
    (intersection a b :test 'equal)
    => ((1 3 7) (0 3 6))
    

    【讨论】:

    • 不错!这正是我想要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多