输入一个向量,我想要写一个函数,给元素之间的连续差异。理想情况下,函数应该输入一个向量x和参数n,指定第n个差值。
表格x中的样本
输入1: 16 10 8 6 4 2 1 (1表示第一差)
输出1:-6 -2 -2 -2
投入2: 16 10 8 6 4 2
产出2: 4 0 0 0零零
从象征意义上讲,下面是示例2所发生的事情(意思是说明想法,而不是code代码)
A b、c、d、e、f、2
a-2b+c,b-2c+d,c-2d+e,d-2e+f
发布于 2013-11-29 01:50:19
与@Shlomi的回答相同,但具有可选的步骤大小参数:
(defn diff
([a]
(map - (next a) a))
([a step]
(map - (nthnext a step) a)))
(defn nthdiff
([a n]
(nth (iterate diff a) n))
([a n step]
(nth (iterate #(diff % step) a) n)))发布于 2013-11-20 23:21:41
给你:
(def a [16 10 8 6 4 2])
(defn diff [a]
(map - (rest a) a))
(defn diff-n [a n]
(nth (iterate diff a) n))
(diff-n a 1) ; => (-6 -2 -2 -2 -2)
(diff-n a 2) ; => (4 0 0 0)https://stackoverflow.com/questions/20108763
复制相似问题