diff options
Diffstat (limited to 'challenge-014')
| -rw-r--r-- | challenge-014/roger-bell-west/perl5/ch-1.pl | 23 | ||||
| -rw-r--r-- | challenge-014/roger-bell-west/perl5/ch-2.pl | 61 | ||||
| -rw-r--r-- | challenge-014/roger-bell-west/perl5/states | 51 |
3 files changed, 135 insertions, 0 deletions
diff --git a/challenge-014/roger-bell-west/perl5/ch-1.pl b/challenge-014/roger-bell-west/perl5/ch-1.pl new file mode 100644 index 0000000000..7a2ec72c77 --- /dev/null +++ b/challenge-014/roger-bell-west/perl5/ch-1.pl @@ -0,0 +1,23 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +my $s=0; +my $n=1; +print "$s "; + +my @lst=(1); + +my $os=0; +while (1) { + if (defined $lst[$s]) { + $s=$n-$lst[$s]; + } else { + $s=0; + } + $lst[$os]=$n; + $n++; + print "$s "; + $os=$s; +} diff --git a/challenge-014/roger-bell-west/perl5/ch-2.pl b/challenge-014/roger-bell-west/perl5/ch-2.pl new file mode 100644 index 0000000000..7c9ffb1177 --- /dev/null +++ b/challenge-014/roger-bell-west/perl5/ch-2.pl @@ -0,0 +1,61 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Getopt::Std; + +my %o=(d => 'SOWPODS', + s => 'states'); +getopts('d:s:h',\%o); + +if ($o{h}) { + print STDERR <<EOF; +Usage: $0 -d dictionary -s state +dictionary file should contain one word per line +state file should contain one abbreviation per line, whitespace, state name +EOF + exit 0; +} + +my %s; + +open S,'<',$o{s}; +while (<S>) { + chomp; + my ($ab,$state)=split ' ',$_,2; + $s{uc($ab)}=$state; +} +close S; + +my $toplen=0; +my @results; + +open D,'<',$o{d}; +OUTER: while (<D>) { + chomp; + my $w=uc($_); + if (length($w)%2==1) { + next OUTER; + } + my @list; + while ($w) { + my $a=substr($w,0,2); + if (exists $s{$a}) { + push @list,$a; + $w=substr($w,2); + } else { + next OUTER; + } + } + if (@list && scalar @list >= $toplen) { + if ($toplen < scalar @list) { + @results=(); + $toplen=scalar @list; + } + my $ex=join(' + ',map {$s{$_}} @list).' = '.join('',@list); + push @results,$ex; + } +} + +print map {"$_\n"} @results; diff --git a/challenge-014/roger-bell-west/perl5/states b/challenge-014/roger-bell-west/perl5/states new file mode 100644 index 0000000000..b25e9f8070 --- /dev/null +++ b/challenge-014/roger-bell-west/perl5/states @@ -0,0 +1,51 @@ +AL Alabama +AK Alaska +AZ Arizona +AR Arkansas +CA California +CO Colorado +CT Connecticut +DE Delaware +DC District of Columbia +FL Florida +GA Georgia +HI Hawaii +ID Idaho +IL Illinois +IN Indiana +IA Iowa +KS Kansas +KY Kentucky +LA Louisiana +ME Maine +MD Maryland +MA Massachusetts +MI Michigan +MN Minnesota +MS Mississippi +MO Missouri +MT Montana +NE Nebraska +NV Nevada +NH New Hampshire +NJ New Jersey +NM New Mexico +NY New York +NC North Carolina +ND North Dakota +OH Ohio +OK Oklahoma +OR Oregon +PA Pennsylvania +RI Rhode Island +SC South Carolina +SD South Dakota +TN Tennessee +TX Texas +UT Utah +VT Vermont +VA Virginia +WA Washington +WV West Virginia +WI Wisconsin +WY Wyoming |
