長さ n の 2 つのベクトルを入力する関数を作成しようとしています。
すなわち [:a :b :c :d :e :f] [1 2 3 4 5 6]。長さ 2n のベクトルを 1 つ出力する
[:a 1 :b 2 :c 3 :d 4 :e 5 :f 6]。
ただし、入力される 2 番目のベクトルが n の長さと一致しない場合は循環します。
すなわち [: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)))))
さらに、この関数は [xy min max n] を取ることもできます。ここで、x と y はベクトル、min はインターリービングを開始するインデックス、max はインターリービングを終了するインデックス、n はインターリービングのステップ サイズです。