On Mon, Nov 30, 2009 at 11:40:04PM +0000, Chris Jack wrote:
> 
> 
> Abigail abig...@abigail.be wrote
> > 
> > On Mon, Nov 30, 2009 at 06:24:12PM +0000, Chris Jack wrote:
> 
> > > 7) Write a one line program that takes a non-negative integer as an 
> > > argument
> > > and prints the square root when the answer's an integer.
> > > 
> > > Restrictions: the perl line should be a regular expression.
> > 
> > Just a regular expression? Regular expressions don't print, so that would
> > be impossible.
> 
> 
> Pedant. Perl regular expressions allow execution of arbitrary code blocks - 
> which is why I put restrictions on which "ordinary" functions you were 
> allowed to use. The actual square root algorithm, however, should only use 
> the "normal" regular expression bestiary.


Do you mean by the latter that given a square number in unary, you want
a regexp determining the square root of that number, _without_ the use
of (?{ }) or (??{ })?

> 
> I was going to point you towards my talk on Perl one-liners - which shows the 
> basic idea behind prime number checking and solving linear equations - but I 
> can't find any of the talks on the London Perl Mongers website... The 
> principal behind doing square root is similar but different.

Well, I guess you're looking for something like:

   /^(1+){"length($1)-1"}$/

which would be 'similar' but 'different' to my prime number checker. 
I'd be very interested to see how to do the C<< {"length($1)-1"} >>
without (?{ })/(??{ }).



Abigail

Reply via email to