Ищу написать функцию, которая вводит два вектора длины п,Объединение векторов по индексу
т.е. [: A: B: C: D: E: F] [1 2 3 4 5 6]. Вывод одного вектора длины 2n
[: a 1: b 2: c 3: d 4: e 5: f 6].
Однако, если второй вектор входного не соответствует длине п он будет цикл,
т.е. [: A: B: C: D: E: F] [1 2 3]
выходы: [: a 1: b 2: c 3: d 1: e 2: f 3].
(defn Swanson [x y] (vec (flatten (interleave x (repeat (count x) y)))))
Кроме того, функция может также принимать [х мин макс п], где х и у являются векторами, мин представляет собой индекс, чтобы начать перемежение, макс является индекс для завершения перемежения, и п представляет собой размер шага для чередования.
Я бы сказал, что аргументы min/max/n не входят в эту функцию - они добавляют слишком много несвязанных обязанностей. Вместо этого используйте простую версию этой функции только с x/y и объедините take, drop и take-nth (или что-то - я не обработал детали). Затем, если вы хотите, вы можете создать еще одну функцию, которая принимает все пять аргументов и вызывает четыре соответствующие функции. – amalloy