(defn into-2d-str-array
  "make a 2 dimention Stirng array"
  [lists]
  (into-array (for [list lists] (into-array String list))))

(defn transpose-2d-str-array
  "return transposed 2 dimention String array"
  [in-array]
  (let [x (alength in-array)
        y (alength (aget #^String in-array 0))
        out-array (make-array String y x)]
    (doseq [i (range 0 x) j (range 0 y)]
      (aset #^String out-array j i (aget #^String in-array i j)))
  out-array))