On Sat, Sep 25, 2010 at 10:44 AM, Nicolas Oury <[email protected]> wrote:
> On Sat, Sep 25, 2010 at 3:40 PM, Jules <[email protected]> wrote:
>> Maybe this: (min-key #(abs (- % 136)) xs)
>>
> Wouldn't that be (apply min-key #(abs (- % 136)) xs)?
Where's your 'abs' function coming from? This works for me:
(apply min-key #(Math/abs (- % 136)) xs)
Or if you want something slower when building the collection but
faster when looking it up, you can use a sorted set:
(let [ss (sorted-set 1 2 134 139 4),
asc (subseq ss >= 136),
desc (rsubseq ss <= 136)]
(min-key #(Math/abs (- % 136)) (first asc) (first desc)))
That's O(log n) instead the simpler (apply min-key ...) which is O(n).
--Chouser
http://joyofclojure.com/
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en