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

Reply via email to