首页 > 解决方案 > 如何在clojure中查找向量是否具有连续元素

问题描述

我是 clojure 的新手,我正在尝试查找 clojure 中的向量是否具有连续元素:在 python 中,使用 numpy 很简单

(np.diff(np.sort(np.array(numbers))))

但我在寻找类似方法时迷失了方向:我的策略是

  1. 用自身减去一个向量
  2. 使它成为一个集合,看看它是否包含第一个元素为 1 并且集合的长度为 1

例如 (def x `(5 7 3 6 4)) 输出将是 (1 1 1 1)

我很困惑如何解决这个问题。

标签: clojure

解决方案


尝试这样的事情:

(defn diff [vals]
   (map - (next vals) vals))

这将返回每对连续元素相等的差异列表。它之所以有效,是因为next只需将值序列偏移一个元素。

示例用法:

(diff [1 2 2 3])
=> (1 0 1)

要测试是否存在连续数字,您只需检查1此列表中是否存在该值。


推荐阅读