2016-11-24 3 views
3

colspatchからペアのリストを作成したいと考えています。 colsにはもっと多くの要素があります。 patchの要素はペアリングで繰り返されます。例えばClojure:等しくないサイズのリストからの要素のより慣用的なペアリング?

(element-wise-patch '(1 3 5 7 9) '(2 4) '()) 
([1 2] [3 4] [5 2] [7 4] [9 2]) 

は、ここでのセマンティクスを実装する私の試みです。よりイディオム的でシンプルなソリューションを学びたいと思っています。

(defn element-wise-patch [cols patch patched] 
     (if (<= (count cols) (count patch)) 
     (concat patched (map vector cols patch)) 
     (let [[compatible remaining] (split-at (count patch) cols)] 
      (element-wise-patch remaining patch (concat patched (map vector compatible patch))))) 

このようなパッチペアリングを行う既存の構造が存在する可能性があると私は感じています。また、私の記述は、類似のソリューションを関連付けるのに十分ではないかもしれません。

私はいくつかのポインタを与えてください、または私の問題を明確に定義するのを助けてください。

ご協力いただきありがとうございます。

答えて

7

かなり単に:

(map vector [1 3 5 7 9] (cycle [2 4])) 
+0

驚くほどエレガント!ありがとう! –

関連する問題