diff options
| author | Markus "Holli" Holzer <holli.holzer@gmail.com> | 2020-03-24 00:24:16 +0100 |
|---|---|---|
| committer | Markus "Holli" Holzer <holli.holzer@gmail.com> | 2020-03-24 00:24:16 +0100 |
| commit | 7f3f2e6d73f31a8e323c087718000de812ec23cd (patch) | |
| tree | f58bf2f63eadea56a172f63f961b93fe8cfdd95f | |
| parent | e05a97fd9f1a2f98c4dc3279072e14a6879b4db9 (diff) | |
| download | perlweeklychallenge-club-7f3f2e6d73f31a8e323c087718000de812ec23cd.tar.gz perlweeklychallenge-club-7f3f2e6d73f31a8e323c087718000de812ec23cd.tar.bz2 perlweeklychallenge-club-7f3f2e6d73f31a8e323c087718000de812ec23cd.zip | |
cause why not
| -rw-r--r-- | challenge-053/markus-holzer/perl/ch-2.pl | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/challenge-053/markus-holzer/perl/ch-2.pl b/challenge-053/markus-holzer/perl/ch-2.pl new file mode 100644 index 0000000000..f2973a3da7 --- /dev/null +++ b/challenge-053/markus-holzer/perl/ch-2.pl @@ -0,0 +1,39 @@ +use Modern::Perl; +use feature qw( signatures postderef switch ); +no warnings qw(experimental); + +my %rules = ( + a => [ 'e', 'i' ], + e => [ 'i' ], + i => [ 'a', 'e', 'o', 'u' ], + o => [ 'a', 'u' ], + u => [ 'e', 'o' ], +); + +main( shift @ARGV || 2 ); + +sub main( $n ) +{ + my @r; + + build_str( $_, $n, \@r ) + for ( sort keys %rules ); + + print join "\n", @r; +} + +sub build_str( $current, $n, $result ) +{ + my $last = substr( $current, -1 ); + + for ( $rules{ $last }->@* ) + { + given ( $current . $_ ) + { + push $result->@*, $_ and next + if length($_) == $n; + + build_str( $_, $n, $result ); + } + } +}
\ No newline at end of file |
