go ahead... be a heretic PerlMonks

### Re: The Oldest Plays the Piano

 on Sep 22, 2009 at 03:31 UTC ( #796655=note: print w/replies, xml ) Need Help??

in reply to The Oldest Plays the Piano

Do you know of other "freak" examples of using regexes to solve combinatorial problems?
Here is a list of some that I know about (with an obvious selection bias -- the first three are due to Abigail, and the last three are some of my posts):

Replies are listed 'Best First'.
Re^2: The Oldest Plays the Piano
by ambrus (Abbot) on Sep 22, 2009 at 12:15 UTC

There's Re: Simple primality testing which links to an older node prime factorization using base 1.

Then there's the amazing dc.sed script which implements arbitrary precision numeric calculations in decimal base in sed – you can find its source here or inside the tarball of gnu sed as a test. I don't really understand how it does the multiplication and division, but I could do the addittion on my own in a slightly more complicated way in Re^2: --- adding a column of integers (it's a loop of four substitutions, dc.sed has two and the teasing comment "could be done in one s/// if we could have >9 back-refs..." which I don't really believe).

How about fibonacci numbers? Some snippets like Re: Fibonacci golf with one state variable use regex substitutions but then they're not really using the power of the regex engine. There must be some way to actually use the regular expression engine to generate fibonacci numbers though. Searching yields fibonacci regex and Fibonacci Regex. These test for fibonacci numbers rather than generating them but there's probably some way to convert them. Another idea is to use something like this but probably there's some nicer way to phrase it:

```perl -le'\$==1,(1x\$_)=~/(^)(1|11\1)*(?{\$=++})^/,print\$=for 0..20'

Update: Explain Fibonacci one-liner ?? too.

Update 2010-07-21: Try this for Catalan numbers:

```perl -le'\$==0,(1x\$_)=~/(^)(|1(?2)(?2)(?(?{})))\$(?{\$=++})^/,print\$=for
+0..13'

Update 2010-11-21: A nicer version for the Catalan numbers:

```perl -le'\$==0,(1x\$_)=~/^(|()1(?1)(?1)\2)\$(?{\$=++})^/,print\$=for 0..13'

Create A New User
Node Status?
node history
Node Type: note [id://796655]
help
Chatterbox?
and the universe expands...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (2)
As of 2017-08-19 00:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Who is your favorite scientist and why?

Results (310 votes). Check out past polls.

Notices?