Hi, when I'm writing a unoptimized solution to a problem, I usually go top down, thinking about what l lists I have to build and transform. I try to split code into words with names instead of adding comments. I try to use the conventions ( http://docs.factorcode.org/content/article-conventions.html ). Also, I try to follow this quote from http://docs.factorcode.org/content/article-cookbook-philosophy.html: "If you find yourself writing a heavily nested loop which performs several steps on each iteration, there is almost always a better way. Break the problem down into a series of passes over the data instead, gradually transforming it into the desired result with a series of simple loops. Factor the loops out and reuse them."
cheers, Jon On Sat, Feb 27, 2016 at 6:43 AM, Sankaranarayanan Viswanathan <rationalrev...@gmail.com> wrote: > Wow, your words are simple and fit in single lines. Do you write pseudo > code that is more expressible in factor or do you write traditional > imperative style pseudo code and then translate them to a factor > representation? > > Thanks, > Sankar > > On 2/25/16 12:01 PM, Jon Harper wrote: >> "Hi, >> I wrote a basic o(n^4) solution to see how simple it could get. The >> code looks nice to me, but it's slloooow :) like 1 hour on the 3200 >> chars string.. http://paste.factorcode.org/paste?id=3843 >> >> I noticed we have 1 function in common : remove-after-underscore. You >> can can see how head and when* make my implementation shorter (and >> more readable?) >> >> Cheers, >> Jon >> >> >> On Wed, Feb 24, 2016 at 5:50 AM, Sankaranarayanan Viswanathan >> <rationalrev...@gmail.com> wrote: >>> Hi, >>> >>> It had been awhile since I wrote any Factor code, so I was trying to >>> solve the following problem from reddit's dailyprogrammer subreddit: >>> http://bit.ly/1OtP8Qj >>> >>> The solution I came up with in Factor looks like this: >>> http://bit.ly/1PY8j98 >>> >>> I struggled quite a lot coming up with this. Mainly in keeping things in >>> my head and figuring out what I needed to do to bring the stack in order >>> for the operations I was attempting.. >>> >>> Coming from an iterative programming background (with a little bit of >>> exposure to functional programming), I find it quite hard to formulate >>> solutions in Factor. Can someone help me with tips on how they approach >>> writing code in Factor? What is your though process to turn a given >>> pseudo code into a factor program? >>> >>> For example, my pseudo code for the main portion of this problem (the >>> find-match function) was as follows: >>> >>> let buff = "" >>> let match = (indx=0, length=-1) >>> for each char c in input: >>> find count(c) in buff >>> if count == 2 >>> append c to buff >>> check if str(first c to end) is longest and update match >>> remove chars in buff before second c occurrence >>> else if count == 1 >>> append c to buff >>> check if str(first c to end) is longest and update match >>> remove chars in buff before first c occurrence >>> else >>> append c to buff >>> discard buff and return match >>> >>> Any pointers is greatly appreciated. >>> >>> Thanks, >>> Sankar >>> >>> >>> ------------------------------------------------------------------------------ >>> Site24x7 APM Insight: Get Deep Visibility into Application Performance >>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month >>> Monitor end-to-end web transactions and take corrective actions now >>> Troubleshoot faster and improve end-user experience. Signup Now! >>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 >>> _______________________________________________ >>> Factor-talk mailing list >>> Factor-talk@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/factor-talk >> >> ------------------------------------------------------------------------------ >> Site24x7 APM Insight: Get Deep Visibility into Application Performance >> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month >> Monitor end-to-end web transactions and take corrective actions now >> Troubleshoot faster and improve end-user experience. Signup Now! >> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 >> > > > > ------------------------------------------------------------------------------ > Site24x7 APM Insight: Get Deep Visibility into Application Performance > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month > Monitor end-to-end web transactions and take corrective actions now > Troubleshoot faster and improve end-user experience. Signup Now! > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk