algorithm - 如何在 Clojure 中删除向量中的顺序匹配项?

标签 algorithm vector clojure

假设我有一个向量["a""b""c""a""a""b"]。如果给定一个序列 ["a""b"],我该如何删除该序列的所有实例(按顺序)?在这里,结果将只是 ["c""a"]

最佳答案

如果预先知道需要删除的序列,core.match 可能对您的任务有用:

(require '[clojure.core.match :refer [match]])

(defn remove-patterns [seq]
  (match seq
    ["a" "b" & xs] (remove-patterns xs)
    [x & xs] (cons x (remove-patterns xs))
    [] ()))


(remove-patterns ["a" "b" "c" "a" "a" "b"]) ;; => ("c" "a")

关于algorithm - 如何在 Clojure 中删除向量中的顺序匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359849/

相关文章:

algorithm - 如何计算旅行推销员双调旅行的最佳路径?

algorithm - 具有惰性传播的线段树 - 将范围内的所有值相乘

arrays - 使用通用迭代器而不是特定的列表类型

clojure:有效地确定字符串是否以集合中的任何前缀开头

c# - XML 比较器 C#

string - 有趣的字符串算法

c++ - 将输入读入 vector 对象

r - 交替,交织或交织两个向量

clojure - 在已安装的文件夹中运行 Docker 镜像命令

android - 在 Clojure 中创建 Android 服务