Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Masem

by Masem (Monsignor)
on Jan 22, 2001 at 09:18 UTC ( #53423=user: print w/replies, xml ) Need Help??

B.S., Chemical Engineering, U. Toledo, 1993 (Summa Cum Laude)
M.S., Chemical Engineering, U. Michigan, 2000
Ph.D., Chemical Engineering, U. Michigan, 2000
Currently a post-doctorate researcher at Argonne Nat'l Labs in Chicago, IL.
Creator of WS#9 among others...
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...
My Home Page for more details
Sainthood obtained on May 20, 2001 20:20 pm CST.


PerlMonks Other Users Locator

Interested in knowing where the current Other Users are all located? You can now see a map (+/- 10 minutes), and more details on how that's generated are available here.


Perl Puzzles
Posted by the Perplexing Populous of PerlMonks for the Pondering and Pleasure of Prenctices and Professionals of Perl

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.

Golf

Perl Golf are challenges to produce valid perl code that does a given task in as few characters in the code as possible.

Other Golf Links

Lanugage Puzzlers

Non-Perl Specific Puzzlers


Current 'Projects'
If you want to call these as such...

  • Reworking of WS#9's CGI - 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.
  • Algorithm::Genetic - A generalized framework for running Genetic Algorithms in perl.
  • Game::Life - Runs Conway's Game of Life in perl
  • List 'regex' engine - 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 ...
  • Rules-based Perl - As discussed in 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.

Preliminary 'language' for List::Regex

I'd appriciate any comments on this, either to my msg box here or email address and I'll try to post updates here.

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.

Here's the ideas I've had in mind:

  • . - Match any element once
  • /xxxxx - Specific class elements, including
    • /word
    • /number
    • /integer
  • /regex/ - Match element if regex matches element
  • ?variable - Assign one element to $variable
  • ?variable:<any of the above> - Assign $variable with conditions set above
  • ?variable:{ perl code } - Assign $variable, and test the embedded perl code with it.
  • ? - (after element) matches 0 or more times
  • + - (after element) matches 0 or 1 time
  • * - (after element) matches 1 or more times
  • [n,m] - (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)
  • <element>|<element> - Or operator
  • (element*)<CODE> - Grouping operator, values stored to @1, @2, etc possibly?  (makes more sense with <code>?variable:(element*))
All matches would be for the entire array, eg implicit ^ and $ on the regex.

Some examples:

@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", @lis +t ); # $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
Hopefully that will give some examples of where I'm going with this...

Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
[LanX]: memories....I missed my connection while chatting
[Discipulus]: in this case Corion we are speaking about software licensing: evry year or two we must rescan the whole ced to produce an excel report, while at every activation / disactivation we update a black box DB: i said that i a week i can produce the perl to..
[Discipulus]: rend out the xls IF i have access to the DB
[choroba]: LanX I miss working in a bank sometimes...
[Corion]: Discipulus: Ooof. Especially yearly things are things I like to automate instead of trying to remember how I did things last year...
[Corion]: And the second rule that I've learned is, that there is no one-off job, so writing a program for it pays off almost immediately. The third rule is to give all my programs numbers and have them reproduce that number in the name of their output files. :)
[Discipulus]: the true part is that also specification change between years.. but well our job is cheap but dont abuse of us.. ;=)
[LanX]: Choroba: do you miss chaos with ties? apply at the US government.. ;)

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (15)
As of 2017-03-29 12:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (350 votes). Check out past polls.