Collections 在clojure中查找多个集合中的列表

Collections 在clojure中查找多个集合中的列表,collections,clojure,combinations,Collections,Clojure,Combinations,我是clojure的新手。我面临的一个问题是从多个集合中查找特殊列表 清单一:(12345) 清单二:(a、b、c、d、e、f) 来源列表:(1C2B4EAF) 要在源列表中查找的列表:(A1)、(1A)、(4C)、(F2) 如何解决它? 谢谢看一看 如果我对这个问题的理解是正确的,并且你不介意暴力,你可以使用这个解决方案 (let [list1 '#{1 2 3 4 5} list2 '#{a b c d e f} source '(1 c 2 b 4 e a f)

我是clojure的新手。我面临的一个问题是从多个集合中查找特殊列表

  • 清单一:(12345)
  • 清单二:(a、b、c、d、e、f)
  • 来源列表:(1C2B4EAF)
    要在源列表中查找的列表:(A1)、(1A)、(4C)、(F2)

    如何解决它?
    谢谢

    看一看


    如果我对这个问题的理解是正确的,并且你不介意暴力,你可以使用这个解决方案

    (let [list1  '#{1 2 3 4 5}
          list2  '#{a b c d e f}
          source '(1 c 2 b 4 e a f)]
      (for [x     source
            y     source
            :when (or (and (list1 x) (list2 y))
                      (and (list1 y) (list2 x)))]
        [x y]))
    
    =>

    ([1c][1b][1e][1a][1f][c1][c2][c4][2b][2e][2a][2f][b1][b2][b4][4c][4b][4e][4a][4f][e1 e2 e4][a1][a2 a4][f1][f4])

    您还可以使用shuffle引入一些随机性,并使用take n获取所需的样本


    或者更简单一点,只需从列表1和列表2中删除不在源代码中的项,然后循环这些过滤列表。

    源代码列表如何确定特殊的组合?另一个或两个示例可能会有所帮助。源列表恰好包含列表一和列表二中的项目。它可能不包含列表一或列表二中的任何内容。这些组合不是由源列表确定的。它们是预定义的。但是一个组合必须包含列表一中的一个和列表二中的另一个。目标是在源列表中搜索每个组合。它不会从这两个列表中找到所有可能的组合。因此,另一组组合可以是(1f),(2e),(3c),(4b)。组合词可能不是合适的词。这只是一个包含两个项目的列表。“源列表中的每个组合”所以你想要排列<代码>=>(组合/置换[1 1 2])([1 1 2][1 2 1][2 1])@hnsyqz老实说,我不太明白你想要什么。根据要求,发布更多示例将有所帮助。@nha,谢谢。我试过了,但因为我刚加入stackoverflow,所以我没有15个声誉。但我的接受是根据我收到的信息记录的。:)很抱歉给你带来了困惑。它不会从两个列表中找到组合。请查看上面的评论。好主意!我也会尝试一下更简单的解决方案。
    (let [list1  '#{1 2 3 4 5}
          list2  '#{a b c d e f}
          source '(1 c 2 b 4 e a f)]
      (for [x     source
            y     source
            :when (or (and (list1 x) (list2 y))
                      (and (list1 y) (list2 x)))]
        [x y]))