<?xml version="1.0" encoding="windows-1252"?>
<node id="53423" title="Masem" created="2001-01-22 04:18:29" updated="2004-01-23 17:35:26">
<type id="15">
user</type>
<author id="53423">
Masem</author>
<data>
<field name="doctext">
B.S., Chemical Engineering, U. Toledo, 1993 (Summa Cum Laude)&lt;BR&gt;
M.S., Chemical Engineering, U. Michigan, 2000&lt;BR&gt;
Ph.D., Chemical Engineering, U. Michigan, 2000&lt;BR&gt;
Currently a post-doctorate researcher at Argonne Nat'l Labs
in Chicago, IL.
&lt;BR&gt;
Creator of &lt;a href="http://pinky.wtower.com/mst3k/"&gt;WS#9&lt;/a&gt;
among others...
&lt;BR&gt;
For those that are curious, I'm mostly self-taught in computer programming; (un)fortunately, the current state
of Chemical Engineering tends to value shrink-wrap over
innovation...
&lt;BR&gt;
&lt;A HREF="http://mneylon.masemware.com/"&gt;My Home Page&lt;/A&gt; for more details&lt;BR&gt;
[Saint]hood obtained on May 20, 2001 20:20 pm CST.
&lt;P&gt;
&lt;HR&gt;
&lt;H3&gt;PerlMonks Other Users Locator&lt;/H3&gt;
&lt;P&gt;
Interested in knowing where the current Other Users are all located?  You can now [http://mneylon.masemware.com/pm/|see a map] (+/- 10 minutes), and more details on how that's generated are [id://95577|available here].
&lt;/P&gt;
&lt;HR&gt;
&lt;H3&gt;Perl Puzzles&lt;BR&gt;
&lt;SMALL&gt;Posted by the Perplexing Populous of PerlMonks for the Pondering and Pleasure of Prenctices and Professionals of Perl&lt;/SMALL&gt;&lt;/H3&gt;
&lt;P&gt;
I'm going to try to keep a current list of perl-based puzzles that have been posted to Perlmonks here; these include but are not limited to Golf or other types of puzzles.  If you find me missing one, drop me a msg or a email and I'll add it.
&lt;/P&gt;
&lt;H4&gt;Golf&lt;/H4&gt;
&lt;P&gt;Perl Golf are challenges to produce valid perl code that does a given task in as few characters in the code as possible.
&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;[id://3586|Pig Latin] by [vroom]
&lt;LI&gt;[id://63671|Key Word in Context System] by [Falkkin]
&lt;LI&gt;[id://67973|Strings-to-Array] by [japhy]
&lt;LI&gt;[id://69570|Nearest Neighbors] by [MeowChow]
&lt;LI&gt;[id://73480|Mixing up da Arrays] by [ChOas]
&lt;LI&gt;[id://73900|Tree Searching] by [Masem]
&lt;LI&gt;[id://74270|List Spliting] by [Masem]
&lt;LI&gt;[id://75004|Triangle Golf] by [nashdj]
&lt;LI&gt;[id://75261|Ordered Combinations] by [MeowChow]
&lt;LI&gt;[id://76083|Embedded in Order] by [Masem]
&lt;LI&gt;[id://77183|Fragment Reassembly] by [MeowChow]
&lt;LI&gt;[id://77203|Interlaced Strings] by [yakko]
&lt;LI&gt;[id://77237|Reversal] by [japhy]
&lt;LI&gt;[id://77751|Per Mutations] by [MeowChow]
&lt;LI&gt;[id://78334|List of Partitions] by [jynx]
&lt;LI&gt;[id://78498|Multiply Polynomials] by [tilly]
&lt;LI&gt;[id://78666|LFSR] (Linear Feedback Shift Register) by [tye]
&lt;LI&gt;[id://79130|Arbitary Alphabetical Sorting] by [Masem]
&lt;LI&gt;[id://79364|Repeated Phrases] by [Masem]
&lt;LI&gt;[id://79436|RPN Calculator] by [Sprad]
&lt;LI&gt;[id://79811|Shortest Graph Distance] by [Masem]
&lt;LI&gt;[id://80272|Minimizing the Bacon Number] by [Masem]
&lt;LI&amp;gt;[id://81130|JAPH] by [tadman]
&lt;LI&gt;[id://81695|Sieve of Eratosthenes] by [tilly]
&lt;LI&gt;[id://81969|Reversing RPN Notation] by [Masem]
&lt;LI&gt;[id://82434|Missing Entries in Series] by [sharle]
&lt;LI&gt;[id://82440|Factorials] by [srawls]
&lt;LI&gt;[id://82512|Grocery Bagging] by [tadman]
&lt;LI&gt;[id://82878|PGA Golf, Round 1] by [jmcnamara] (and [id://84767|Results])
&lt;LI&gt;[id://83013|Selection from Sets] by [knobunc]
&lt;LI&gt;[id://83017|Subroutine Chaining Idiom] by [Ovid]
&lt;LI&gt;[id://83867|Phone Numbers to Words] by [mischief]
&lt;LI&gt;[id://83923|Closest Value in List] by [larryk]
&lt;LI&gt;[id://84150|Binomal Coefficients/Pascal's Triangle] by [tachyon]
&lt;LI&gt;[id://85399|Best 8-Character Obfuscation] by [mr.nick]
&lt;LI&gt;[id://86047|Matching State Abbreviations] by [John M. Dlugosz]
&lt;LI&gt;[id://86805|LED Sign] by [tadman]
&lt;LI&gt;[id://87681|Making Change] by [tadman]
&lt;LI&gt;[id://89075|Kaprekar's Process] by [srawls]
&lt;/UL&gt;
&lt;H5&gt;Other Golf Links&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;[id://77230|Golf Do-s and Don't-s] by [japhy]
&lt;LI&gt;[id://81870|On Golf] by [Dominus]
&lt;LI&gt;[id://82470|Tips on Writing Golf Challenges] by [chipmunk]
&lt;/UL&gt;
&lt;H4&gt;Lanugage Puzzlers&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;[id://72489|The "Proposal Problem"] by [nysus]
&lt;LI&gt;[id://72605|Little Stumper] by [nysus]
&lt;LI&gt;[id://72671|Just for Newbies] by [nysus]
&lt;LI&gt;[id://79981|"Junkyard" Puzzle - Avergae of Numbers] by [Masem]
&lt;/UL&gt;
&lt;H4&gt;Non-Perl Specific Puzzlers&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;[id://39366|Spooky Math Problem] by [tilly]
&lt;LI&gt;[id://54682|5x5 Puzzle] by [tilly]
&lt;LI&gt;[id://84175|Triangular Numbers] by [jepri]
&lt;/UL&gt;
&lt;HR&gt;
&lt;H3&gt;Current 'Projects'&lt;BR&gt;&lt;SMALL&gt;If you want to call these as such...&lt;/SMALL&gt;&lt;/H3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Reworking of WS#9's CGI&lt;/b&gt; - most of the current code is hobbled together over 3 years time, and from a feature standpoint, most everything I want is frozen, so I'm working on rewriting everything better thanks to DBI and TT2.
&lt;LI&gt;&lt;B&gt;[Algorithm::Genetic]&lt;/B&gt; - A generalized framework for running Genetic Algorithms in perl.
&lt;LI&gt;&lt;B&gt;[Game::Life]&lt;/B&gt; - Runs Conway's Game of Life in perl
&lt;li&gt;&lt;b&gt;List 'regex' engine&lt;/b&gt; - I'd like to be able to develop a way to be able to match arbitary lists of data against some patterns; the matching would be done at the element level as opposed to individual characters, but I want to be able to include the ability to use arbitary functions for matching as well, such as item for item based on a true string regex, a condition, or other similar features....I want to do this because of ...
&lt;li&gt;&lt;B&gt;Rules-based Perl&lt;/B&gt; - As discussed in [id://71319|this node], a rules-based perl language would be rather interesting to work with, maybe more from a curiousity sake then anything else.  In order to even start this, it's absolutely necessary to develop the list regexs as mentioned above.
&lt;/ul&gt;

&lt;h4&gt;Preliminary 'language' for List::Regex&lt;/h4&gt;
&lt;P&gt;
&lt;B&gt;I'd appriciate any comments on this, either to my msg box here or [mailto:mneylon-pm@masemware.com|email address]
and I'll try to post updates here.&lt;/B&gt;
&lt;P&gt;
I believe I've got the approach to doing this one; I'm going to take [Parse::RecDescent], with a fixed grammar, then use that grammar to develop a grammar specifically for the regex itself to pump back into Parse::RecDescent again (meta!).  I was going to try to develop my own finite state machine to do this, but I believe I can make use of existing code better than starting from scratch.
&lt;P&gt;
Here's the ideas I've had in mind:
&lt;UL&gt;
&lt;li&gt;&lt;CODE&gt;.&lt;/CODE&gt; - Match any element once
&lt;li&gt;&lt;CODE&gt;/xxxxx&lt;/CODE&gt; - Specific class elements, including
&lt;UL&gt;
&lt;LI&gt;&lt;CODE&gt;/word&lt;/CODE&gt;
&lt;LI&gt;&lt;CODE&gt;/number&lt;/CODE&gt;
&lt;LI&gt;&lt;CODE&gt;/integer&lt;/CODE&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;CODE&gt;/regex/&lt;/CODE&gt; - Match element if regex matches element
&lt;LI&gt;&lt;CODE&gt;?variable&lt;/CODE&gt; - Assign one element to $variable
&lt;LI&gt;&lt;CODE&gt;?variable:&lt;any of the above&gt;&lt;/CODE&gt; - Assign $variable with conditions set above
&lt;LI&gt;&lt;CODE&gt;?variable:{ perl code }&lt;/CODE&gt; - Assign $variable, and test the embedded perl code with it.
&lt;LI&gt;&lt;CODE&gt;?&lt;/CODE&gt; - (after element) matches 0 or more times
&lt;LI&gt;&lt;CODE&gt;+&lt;/CODE&gt; - (after element) matches 0 or 1 time
&lt;LI&gt;&lt;CODE&gt;*&lt;/CODE&gt; - (after element) matches 1 or more times
&lt;LI&gt;&lt;CODE&gt;[n,m]&lt;/CODE&gt; - (after element) matches at least n but no more than m times  (using {} would be nice if I can set it up to differentiate from the perl code above)
&lt;LI&gt;&lt;CODE&gt;&lt;element&gt;|&lt;element&gt;&lt;/CODE&gt; - Or operator
&lt;LI&gt;&lt;CODE&gt;(element*)&lt;CODE&gt; - Grouping operator, values stored to @1, @2, etc possibly?  (makes more sense with &lt;code&gt;?variable:(element*)&lt;/CODE&gt;)
&lt;/UL&gt;
All matches would be for the entire array, eg implicit ^ and $ on the regex.
&lt;P&gt;
Some examples:
&lt;CODE&gt;
@list = qw( The quick brown fox jumped over the lazy dog );

listparse( ".[9]", @list );  #true
listparse( ".[8]", @list );  #false
listparse( "The ?adjectives:(.*) fox jumped over the lazy ?what", @list );  
   # $adjectives would be set as a ref to [ quick, brown ]
   # $what would be set to "fox"
listparse( "The ?speed:{ $speed eq 'quick' } .*", @list );
   # $speed would be set to 'quick'
listparse( "The ?speed:{ $speed ne 'quick' } .*", @list );
   # false
listparse( "/word*", @list ); #true
listparse( "/word /number .*, @list) ; #false
&lt;/CODE&gt;
Hopefully that will give some examples of where I'm going with this...
&lt;P&gt;


 

&lt;!-- location:latitude=41.47.7,longitude=-88.9.38 --&gt;
&lt;!-- os:Linux/Unix,NT,WinXX --&gt;
&lt;!-- birthday:1971/04/27 --&gt;
&lt;!-- email:mneylon-pm@masemware.com --&gt;</field>
<field name="lasttime">
2006-08-09 01:45:56</field>
<field name="experience">
12764</field>
<field name="user_scratchpad">
360162</field>
<field name="imgsrc">
0</field>
<field name="timeformat">
</field>
<field name="numwriteups">
981</field>
<field name="location">
Chicago, IL USA</field>
<field name="timezone">
-5</field>
<field name="codewrapoff">
</field>
<field name="codewraplength">
80</field>
<field name="codeautowrap">
</field>
<field name="codeprefix">
</field>
<field name="codebig">
</field>
</data>
</node>
