Функция редукции Clojure для вектора, содержащего векторы смеси и двойники - PullRequest
0 голосов
/ 16 октября 2018

Я бы хотел сложить вектор, содержащий смесь двойников и векторов.Что-то вроде

[[1 2 1 [1 2 3]] [1 2 4 [1 1 1]]...]

Что я хотел бы суммировать так, чтобы я получил что-то вроде

[212 12 444 [11 2 12]]

Есть ли эффективныйспособ сделать это с помощью основных функций clojure, таких как уменьшение или отображение?

1 Ответ

0 голосов
/ 16 октября 2018

I думаю, , что вы хотите иметь функцию, которая добавляет вложенную векторную структуру, так что (nvadd [1 2 1 [1 2 3]] [1 2 4 [1 1 1]]) оценивается как [2 4 5 [2 3 4]].Затем вы можете reduce ваш вектор таких векторов с этой функцией.

(defn nvadd [a b]
  (mapv #(if (vector? %1)
           (nvadd %1 %2)
           (+ %1 %2))
        a b))

Это предполагает правильно сформированный ввод.

...