Hi Zemin,

I just started learning clojure and came across your post, as I was 
implementing Floyd's algorithm.

Here's what I came up with.

https://gist.github.com/patforna/2cf0ffb46a1c0b93084d

I've got no idea, if this makes sense, so any feedback would be really 
appreciated.

Cheers,
pat

On Sunday, June 30, 2013 10:20:33 AM UTC+7, Zhemin Lin wrote:
>
> Hi Simone & Cedric,
>
> Thanks for your comment.  In fact, my purpose is to demonstrate to my 
> colleagues how Clojure deals with this algorithm.
> I'm going to implement the Brent's way.
>
> However, I'm wondering if I can make the Floyd's more functional.
> Tail recursion is good, but not good enough to show the "paradigm shift" 
> (of functional programming) to my colleagues.
>
> Any ideas?
> Thanks! :)
>
> 2013年6月30日日曜日 2時58分57秒 UTC+8 Cedric Greevey:
>>
>> If the function is expensive to compute, you might prefer Brent's 
>> periodicity detection algorithm, which instead of 1.5xn invocations of the 
>> function only requires n + o(log n) invocations and supposedly detects just 
>> as fast.
>>
>> You store [last-n, last-f, next-n] = [0, f(0), 1] and then, for n = 1 to 
>> whatever:
>>
>> * compute f(n)
>> * see if it's equal to last-f; if it is, f is or becomes periodic with a 
>> period dividing n - last-n.
>> * if n = next-n, change the store to [n, f(n), 2*next-n]
>> * move on to f(n + 1).
>>
>>
>>
>> On Sat, Jun 29, 2013 at 10:43 AM, Simone Mosciatti <mweb...@gmail.com> 
>> wrote:
>>
>>> It is very interesting, just a friendly suggestion, if you share code, 
>>> and need some help, make sure people can get immediately what is going on.
>>> (READ: comment the code)
>>>
>>>
>>> On Saturday, June 29, 2013 1:34:57 PM UTC+2, Zhemin Lin wrote:
>>>>
>>>> Hi.
>>>> One of my colleagues gave a share about the cycle detecting 
>>>> tortoise-hare algorithm (wiki 
>>>> <http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare>).
>>>> I translated the script on Wiki from Python to Clojure.
>>>> It worked, but not elegant.  I'd like to make it more functional, more 
>>>> tasty.
>>>> Any suggestions to help it evolve?
>>>>
>>>> I uploaded my (messy) code here: https://github.com/
>>>> miaoski/clojure-tortoise-hare
>>>> Thanks a lot! :)
>>>>
>>>>  -- 
>>> -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>>>
>>
>>

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

Reply via email to