Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Re: Golf challange: match U.S. State names

by merlyn (Sage)
on Jun 06, 2001 at 06:57 UTC ( #86106=note: print w/replies, xml ) Need Help??

in reply to Golf challange: match U.S. State names

118 chars:
And it's 117 chars if you replace pop with $_, as the original rules ask.

The character string was constructed to ensure that a valid state would never match a non-valid boundary. It was easier than I thought:

#!/usr/bin/perl use strict; $|++; my @states = qw( AK AL AR AZ CA CO CT DC DE FL GA HI IA ID IL IN KS KT KY LA MA MD ME MI MN MO MS MT NC ND NE NH NJ NM NV NY OH OK OR PA RI SC SD TN TX UT VA VT WA WI WV WY ); my %states = map { $_ => 1 } @states; try("", \@states); sub try { print "try: $_[0] @{$_[1]}\n"; my $prefix = shift; my @later = @{+shift}; unless (@later) { print "WINNER: $prefix\n"; exit; } for my $i (0..$#later) { my $prefix2 = "$prefix$later[$i]"; if (length $prefix2 < 3 or not $states{substr($prefix2, -3, 2)}) { ## worth recursing try($prefix2, [@later[0..$i-1, $i+1..$#later]]); } } }

-- Randal L. Schwartz, Perl hacker

Replies are listed 'Best First'.
Re: Re: Golf challange: match U.S. State names
by MeowChow (Vicar) on Jun 06, 2001 at 07:56 UTC
    This has two problems: on a non-match, index will return -1, which, ANDed with 1, returns 1, so virtually any string will match. This sub will also match strings like "ALC" or just "A".
                   s aamecha.s a..a\u$&owag.print

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://86106]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2019-09-23 09:32 GMT
Find Nodes?
    Voting Booth?
    The room is dark, and your next move is ...

    Results (279 votes). Check out past polls.