Advertisement
IzhanVarsky

Untitled

Apr 21st, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. (def by-coord-op #(partial mapv %))
  2. (def mapv-partial #(fn [a b] (mapv (partial % b) a)))
  3.  
  4. (def v+ (by-coord-op +))
  5. (def v- (by-coord-op -))
  6. (def v* (by-coord-op *))
  7. (def scalar #(apply + (v* %1 %2)))
  8.  
  9. (defn fn-for-vect [num1 num2 vec1 vec2]
  10. (- (* (nth vec1 num1) (nth vec2 num2))
  11. (* (nth vec1 num2) (nth vec2 num1))))
  12. (defn vect [a b]
  13. [(fn-for-vect 1 2 a b)
  14. (fn-for-vect 2 0 a b)
  15. (fn-for-vect 0 1 a b)
  16. ])
  17. (def v*s (mapv-partial *))
  18. (def s*v #(v*s %2 %1))
  19. (def m+ (by-coord-op v+))
  20. (def m- (by-coord-op v-))
  21. (def m* (by-coord-op v*))
  22. (def m*s (mapv-partial s*v))
  23. (def m*v (mapv-partial scalar))
  24. (def transpose (partial apply mapv vector))
  25. (defn m*m [a b] (mapv #(mapv (partial scalar %) (transpose b)) a))
  26.  
  27. (def shape-op #(fn calc [a b] (if (vector? a) (mapv calc a b) (% a b))))
  28.  
  29. (def s+ (shape-op +))
  30. (def s- (shape-op -))
  31. (def s* (shape-op *))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement