Here's a challenge:  

 

Just because @ might show up in third grade, that doesn't include all its
little cousins like  @: & and &:

 

To me, minimal documentation begins with the data using capital letters for
the name. Since F is not a verb, don't start here.

 

F=: </.~ +/\@(-.@+._1&|.)@:=&(<,'&')

 

Also it is a very tangled verb:

  5!:4 <'F'

  -- ~ --- /. ---- <                   
  │                   -- \ --- / --- + 
  │                   │                
  │                   │           -- -.
--+             -- @ -+     -- @ -+- +.
  │             │     │     │          
  │     -- @: --+     L-----+     -- _1
  │     │       │           L- & -+- |.
  L- & -+       L- =                   



Begin here with the data:

        L- <,'&'                       

   ]T=:  ;:'4&count int 3 8&inrange' 

--T-T-----T---T---T-T-------┐
│4│&│count│int│3 8│&│inrange│
L-+-+-----+---+---+-+--------

  

Here's the challenge. Just for fun, write a single line direct definition of
F. Use simple J. You may use @ and name the verb f.

 

 

   f=: 13 :' (direcct defn) '

   f T

------------T-----T---------------┐
│--T-T-----┐│----┐│----T-T-------┐│
││4│&│count│││int│││3 8│&│inrange││
│L-+-+------│L----│L---+-+--------│
L-----------+-----+----------------

   

Apply f to T to get the result.  

 

That is usually enough information for sending a question to the forum.
Advanced programmers could use tacit verbs like Pascal's verb. Often you can
only explain these parts in words. Having a sample of your data and an
indication of whether you are planning one or two arguments for your verb
will help.

 

Linda

 

 

 

Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Cliff Reiter
Sent: Monday, January 26, 2015 3:46 AM
To: [email protected]
Subject: Re: [Jprogramming] A parsing challenge

 

Lovely. Tiny remark:

 

 <mailto:-.@> -.@+. could be replaced by +:

 

On 1/26/2015 1:00 AM, Raul Miller wrote:

> A note of explanation...

> 

> (I have been noticing that far too much software is poorly documented.

> And while I cannot do an adequate job of documenting other people's 

> software, I can document software I write.)

> 

>     F=: </.~ +/\@( <mailto:-.@+._1&;|.)@:=&(%3c,'&')>
-.@+._1&|.)@:=&(<,'&')

>     T=:  ;:'4&count int 3 8&inrange'

> 

> The first thing I do is find out where & appears:

>     =&(<,'&') T

> 0 1 0 0 0 1 0

> 

> The second thing I do is rotate to the right and combine:

>     (+. _1&|.) =&(<,'&') T

> 0 1 1 0 0 1 1

> 

> Except I want to mark the beginning of each section with a 1, and 

> right now they are zeros.

>     ( <mailto:-.@> -.@+. _1&|.) =&(<,'&') T

> 1 0 0 1 1 0 0

> 

> As an aside, note that I could have cut that step out if I had started 

> by identifying where & does not appear (and then combine using logical 

> and instead of logical or):

> 

>     (* _1&|.) ~:&(<,'&') T

> 1 0 0 1 1 0 0

> 

> Next, I use plus scan to turn my markers into keys:

> 

>     +/\ (* _1&|.) ~:&(<,'&') T

> 1 1 1 2 3 3 3

> 

> Finally, I use these keys to group the original elements:

> 

>     T </.~ +/\ (* _1&|.) ~:&(<,'&') T

> +-----------+-----+---------------+

> |+-+-+-----+|+---+|+---+-+-------+|

> ||4|&|count|||int|||3 8|&|inrange||

> |+-+-+-----+|+---+|+---+-+-------+|

> +-----------+-----+---------------+

> 

> And that exposition pretty much follows the thought process I 

> originally used to compose the sentence.

> 

> Thanks,

> 

 

----------------------------------------------------------------------

For information about J forums see  <http://www.jsoftware.com/forums.htm>
http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to