else conditionals clojure matrix

conditionals - transposición matricial en clojure



clojure conditionals (2)

A partir de 2014, recomendaría utilizar core.matrix para cualquier trabajo numérico en Clojure.

Entre otras cosas, esto proporciona implementaciones de todas las operaciones de matriz más comunes:

(use ''clojure.core.matrix) (transpose [[1 2] [3 4]]) => [[1 3] [2 4]]

Para evitar una posible representación de una matriz es un vector de vectores, es decir, [[1 2] [3 4]] . Una posible implementación de la transposición de una matriz sería:

(defn transpose [matrix] (loop [matrix matrix, transp [], i 0] (if (< i (count (nth matrix 0))) (recur matrix (conj transp (vec (reduce concat (map #(conj [] (nth %1 i)) matrix)))) (inc i)) transp)))

¿Alguien puede pensar en una implementación más idiomática para ocultar? por ejemplo, para evitar que este bucle horrible se repita?


La solucion habitual es

(defn transpose [m] (apply mapv vector m))