(#~a:~:{:"1)(]/.~/:~&>)<;._2]1!:1<'t'

In Henry's solution:
- missing the ] argument to /.
- can use /:~&> instead of /:&.> (will be faster, I expect)
- cutting into words can be done more succinctly
- using a shorter file name will make soln shorter



----- Original Message -----
From: Henry Rich <[EMAIL PROTECTED]>
Date: Thursday, September 25, 2008 12:16
Subject: RE: [Jprogramming] Words of Equal Characters
To: 'Programming forum' <[email protected]>

> I don't have the file to test with, but I offer
> 
> (#~a:~:{:"1)(/.~/:~&.>)<;._2 toJ fread 
> jpath'~temp\unixdict.txt' 
> 
> Use the sorted strings as the keys without converting to
> numbers; don't box the results but allow them to fill
> a table; longest sets will be the ones without a: at the end.
> 
> Henry Rich
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] 
> > [mailto:[EMAIL PROTECTED] On Behalf Of Dan Bron
> > Sent: Thursday, September 25, 2008 2:55 PM
> > To: Programming forum
> > Subject: [Jprogramming] Words of Equal Characters
> > 
> > Recently, I've been playing around on Rosetta Code [1].  
> A 
> > Python guy posted a new task:
> > 
> >      
> http://rosettacode.org/wiki/Words_Of_Equal_Characters> 
> > What is the shortest possible J expression to solve this 
> > task?    Here, "shortest" means the minimum 
> number of 
> > essential (required) characters.  Right now, I have:
> > 
> >            >(#~[:(=>./)#&>)(</.~[:i.~/:~&.>)<;._2 toJ fread 
> > jpath'~temp\unixdict.txt'
> >     +-----+-----+-----+-----+-----+
> >     |abel |able |bale |bela |elba |
> >     +-----+-----+-----+-----+-----+
> >     |alger|glare|lager|large|regal|
> >     +-----+-----+-----+-----+-----+
> >     |angel|angle|galen|glean|lange|
> >     +-----+-----+-----+-----+-----+
> >     |caret|carte|cater|crate|trace|
> >     +-----+-----+-----+-----+-----+
> >     |elan |lane |lean |lena |neal |
> >     +-----+-----+-----+-----+-----+
> >     |evil |levi |live |veil |vile |
> >     +-----+-----+-----+-----+-----+
> > 
> > which is shorter than the original Python solution, but not 
> > dramatically shorter.  Is there a way to code this to 
> really 
> > show off J's power?  I'm more focused on the aspect that 
> > produces the result given a list of words, rather than the 
> > aspect that generates the list of words from the text (i.e. 
> > I'm seeking to minimize the code to the left of the cut).
> > 
> > -Dan
> > 
> > [1] Rosetta Code is what it sounds like -- a chrestomathy 
> > site where programmers are invited to solve programming tasks 
> > using different languages, to build up a "Rosetta Stone" for 
> > different programming languages.
> > 
> > Of course, the primary motivation for posting a solution to 
> > Rosetta Code is not to teach others your language, or to make 
> > it easier for a maintenance programmer to convert a legacy 
> > system from COBOL to Perl.  Those are just side 
> effects.    
> > The primary motivation for posting a solution to Rosetta Code 
> > is to brag.  It's main constituency is evangelists.  
> It's the 
> > premier public programming pissing match.
> > 
> > One drawback of Rosetta Code is that only the results of the 
> > programmer's efforts are visible; there's no way to tell how 
> > long the solution took, or how the language enabled the 
> > programmer to reach the solution.  So even though this 
> > solution (the "obvious way") took me less than a minute to 
> > write, no one reading the page will know that.  The only 
> > opportunity to "wow" the audience is with a succinct, elegant 
> > solution.  And since most of the audience won't be able 
> to 
> > read J, elegant is less important than succinct.  That's 
> why 
> > I'm seeking an impressively short solution to this task 
> > (which seems right up J's alley).


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

Reply via email to