> Hello,
> 
> 
> I'm trying to find an elegant way of indexing a two-dimensional sequence 
> with the coordinates as keys. 
> 

If you know width and height you can generate the pattern of coordinates instead
of calculating it:

     (map vector (for [y (range height) x (range width)] y)
                 (cycle (range width)))

=> ([0 0] [0 1] [0 2] [1 0] [1 1] [1 2]) ; for height 2, width 3

or if you don't like 'for':

     (map vector (mapcat #(repeat width %) (range height))
                 (cycle (range width)))




now combine with a one-dimensional input string:

    (zipmap (map vector (for [y (range height) x (range width)] y)
                        (cycle (range width)))
            "#I##O#")


=> {[1 2] \#, [1 1] \O, [1 0] \#, [0 2] \#, [0 1] \I, [0 0] \#}

HTH,

Jan

-- 
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

Reply via email to