aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalt Mankowski <waltman@pobox.com>2020-09-03 21:26:19 -0400
committerWalt Mankowski <waltman@pobox.com>2020-09-03 21:26:19 -0400
commita1e3bd722a9fe8d2725998f18c59c0989a3e37aa (patch)
tree745e74dcb9b735801d0fd554afa4b6962cab617e
parent547803013c605082d977b850974be03420de6539 (diff)
downloadperlweeklychallenge-club-a1e3bd722a9fe8d2725998f18c59c0989a3e37aa.tar.gz
perlweeklychallenge-club-a1e3bd722a9fe8d2725998f18c59c0989a3e37aa.tar.bz2
perlweeklychallenge-club-a1e3bd722a9fe8d2725998f18c59c0989a3e37aa.zip
parse the dictionary into words and prefixes
-rw-r--r--challenge-076/walt-mankowski/perl/ch-2.pl23
1 files changed, 23 insertions, 0 deletions
diff --git a/challenge-076/walt-mankowski/perl/ch-2.pl b/challenge-076/walt-mankowski/perl/ch-2.pl
index fba7870763..c7ab9b49cc 100644
--- a/challenge-076/walt-mankowski/perl/ch-2.pl
+++ b/challenge-076/walt-mankowski/perl/ch-2.pl
@@ -29,6 +29,11 @@ for my $row ($grid->@*) {
say $row->@*;
}
+my ($words, $prefixes) = parse_dict($dict_name, $MIN_LEN);
+for my $k (sort keys %$prefixes) {
+ say $k;
+}
+
sub read_grid($grid_name) {
my @grid;
@@ -60,3 +65,21 @@ sub read_grid($grid_name) {
return \@grid;
}
+
+sub parse_dict($dict_name, $min_len) {
+ my %words;
+ my %prefixes;
+
+ open my $fh, '<', $dict_name;
+ while (my $word = <$fh>) {
+ chomp $word;
+ next unless length($word) >= $min_len;
+ next unless $word =~ /^[a-z]+$/;
+
+ $words{$word} = 1;
+ for my $len (1..length($word)) {
+ $prefixes{substr($word, 0, $len)} = 1;
+ }
+ }
+ return (\%words, \%prefixes);
+}