Re: Index of an element in a vector of vectors
Don't know what you mean about "swapping", but here's a solution that generalizes to a tree of any finite depth, where each node is either a leaf element or a seqable (say, a vector) of any length: (defn coord-of ([elems target] (coord-of elems target [])) ([elems target indexes] (first (keep-indexed (fn [i x] (cond (= x target) (conj indexes i) (seqable? x) (coord-of x target (conj indexes i elems Then, for example, cljs.user=> (coord-of [[] 11 [1 2 3] [4 5 6]] 5) [3 1] cljs.user=> (coord-of [[] 11 [1 2 3] [4 5 6]] 55) nil -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Index of an element in a vector of vectors
In that case you can use mapv: (mapv (fn [xs] (mapv (fn [x] (if (= x "5") "XX" x)) xs)) players) Two notes: 1. There is room for optimization if you only want to map one element. This currently will just keep going. A smart implementation could bail out of the inner loop 2. If this is something you want to do frequently you may want to use different data structures (probably a map) that allow you to access elements fast. If you sketch your access and transform patterns then I'm sure we can recommend a better way. On Thursday, December 8, 2016 at 11:13:42 AM UTC+1, Rickesh Bedia wrote: > > Is there a way to generalise? > > I.e a function that allows you to swap any of the 1-9? > > On Wednesday, 7 December 2016 18:06:19 UTC, Andy- wrote: >> >> One option is to use keep-indexed: >> >> (first >> (keep-indexed >> (fn [i xs] >> (first >> (keep-indexed >> (fn [j x] >> (when (= x "5") >> [i j])) >> xs))) >> players)) >> >> >> >> On Wednesday, December 7, 2016 at 5:32:10 PM UTC+1, Rickesh Bedia wrote: >>> >>> If I have >>> >>> (def players [["1" "2" "3"] ["4" "5" "6"] ["7" "8" "9"]]) >>> >>> How would I get the index of number 5? I think it should be [1 1] but >>> don't know how to get this >>> >>> If it were more simple such as >>> >>> (def players ["1" "2" "3"]) >>> >>> I can get the index using >>> >>> (.indexOf players "2") > 1 >>> (.indexOf players "3") > 2 >>> >>> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Index of an element in a vector of vectors
Is there a way to generalise? I.e a function that allows you to swap any of the 1-9? On Wednesday, 7 December 2016 18:06:19 UTC, Andy- wrote: > > One option is to use keep-indexed: > > (first > (keep-indexed > (fn [i xs] > (first > (keep-indexed > (fn [j x] > (when (= x "5") > [i j])) > xs))) > players)) > > > > On Wednesday, December 7, 2016 at 5:32:10 PM UTC+1, Rickesh Bedia wrote: >> >> If I have >> >> (def players [["1" "2" "3"] ["4" "5" "6"] ["7" "8" "9"]]) >> >> How would I get the index of number 5? I think it should be [1 1] but >> don't know how to get this >> >> If it were more simple such as >> >> (def players ["1" "2" "3"]) >> >> I can get the index using >> >> (.indexOf players "2") > 1 >> (.indexOf players "3") > 2 >> >> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Index of an element in a vector of vectors
One option is to use keep-indexed: (first (keep-indexed (fn [i xs] (first (keep-indexed (fn [j x] (when (= x "5") [i j])) xs))) players)) On Wednesday, December 7, 2016 at 5:32:10 PM UTC+1, Rickesh Bedia wrote: > > If I have > > (def players [["1" "2" "3"] ["4" "5" "6"] ["7" "8" "9"]]) > > How would I get the index of number 5? I think it should be [1 1] but > don't know how to get this > > If it were more simple such as > > (def players ["1" "2" "3"]) > > I can get the index using > > (.indexOf players "2") > 1 > (.indexOf players "3") > 2 > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Index of an element in a vector of vectors
If I have (def players [["1" "2" "3"] ["4" "5" "6"] ["7" "8" "9"]]) How would I get the index of number 5? I think it should be [1 1] but don't know how to get this If it were more simple such as (def players ["1" "2" "3"]) I can get the index using (.indexOf players "2") > 1 (.indexOf players "3") > 2 -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.