aboutsummaryrefslogtreecommitdiff
path: root/challenge-014
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-014')
-rw-r--r--challenge-014/roger-bell-west/perl5/ch-1.pl23
-rw-r--r--challenge-014/roger-bell-west/perl5/ch-2.pl61
-rw-r--r--challenge-014/roger-bell-west/perl5/states51
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