[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [FWP] 100 point words.



On Fri, Jul 23, 1999 at 02:23:35PM -0400, Ronald J Kimball wrote:
> On Fri, Jul 23, 1999 at 12:52:35PM -0500, Brent Michalski wrote:
> > Last summer my son came home with an assignment to find as many words as
> > he could that add up to 100 points.  With A=1, B=2, ... Z=26
> > 
> > We were going on vacation that week and had 2 10 hour drives in the
> > car.  At the end of the 20 hours, we had 4 or 5 words that added up to
> > 100.  PRINTER is a word that adds up to 100.
> >
> > It would be fun to create such a program and run it against a
> > "standard/common" dictionary and see who could do it in the coolest, or
> > shortest, way...
> 
> For shortest, can anyone beat this one-liner?
> 
> 
> perl -e'while(<>){$t+=1+ord($1)-ord"a"while/(.)/g;print if$t==100;$t=0}'

I get Yugoslavia out of this, which ain't right.  You forgot to normalize your data.  Just stick an lc in there like so:

perl -e'while(<>){$t+=1+ord(lc$1)-ord"a"while/(.)/g;print if$t==100;$t=0}'


Anyhow, here's the solution I came up with:

perl -nle 'BEGIN{%c=map{($_=>++$c)}"a".."z"}$s=0;print if map({$s+=$c{lc$_}}split("")),$s==100;' <word file>


-- 

Michael G Schwern                                           schwern@pobox.com
                    http://www.pobox.com/~schwern
     /(?:(?:(1)[.-]?)?\(?(\d{3})\)?[.-]?)?(\d{3})[.-]?(\d{4})(x\d+)?/i

==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
====   unsubscribe