2014-02-06 75 views

回答

1

嘗試這種情況:

(defn is-upper-triangular [m] 
    (->> (map-indexed vector m) 
     (mapcat (fn [[r v]] (take r v))) 
     (every? zero?))) 

上述代碼採取從第一行0元件中,從第二行1個元件,以及從第三行,等等2個元件...並檢查所有的取元素是零。如果全部爲零,則爲上三角形。

此代碼不檢查給定的矩陣是方形的。如果有必要,您可以添加此檢查。

0

upper-triangular?不是core.matrix API在又,但如果使用vectorz-clj可以在與Java互操作功能得到:

(def a (array :vectorz [[1 2] [0 4]])) 

(.isUpperTriangular a) 
=> true 

(.isUpperTriangular (transpose a)) 
=> false 
+0

(DEF一個(數組:vectorz [[1 2] [0 4 ]]))給出以下例外。我在窗戶上使用Leiningen。 CompilerException java.lang.RuntimeException:無法在此上下文中解析符號:數組,編譯:(NO_SOURCE_PATH:1:8) –

+0

聽起來像需要首先執行一個'(使用'clojure.core.matrix')來導入內核.matrix API函數進入你當前的命名空間 – mikera