diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-07-05 19:13:17 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-07-05 19:13:17 -0400 |
| commit | e8963e0eeffa77601db5a9a98a2caf6780b07193 (patch) | |
| tree | e1744bdb2f4169d6dcbb7d6357c4512dfcff0040 /challenge-067 | |
| parent | 2e3c90b6a116931e7bd2234aa78f76efa0084a3e (diff) | |
| download | perlweeklychallenge-club-e8963e0eeffa77601db5a9a98a2caf6780b07193.tar.gz perlweeklychallenge-club-e8963e0eeffa77601db5a9a98a2caf6780b07193.tar.bz2 perlweeklychallenge-club-e8963e0eeffa77601db5a9a98a2caf6780b07193.zip | |
Challenge 67 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-067')
| -rw-r--r-- | challenge-067/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-067/jaldhar-h-vyas/perl/ch-1.pl | 45 | ||||
| -rwxr-xr-x | challenge-067/jaldhar-h-vyas/perl/ch-2.pl | 56 | ||||
| -rwxr-xr-x | challenge-067/jaldhar-h-vyas/raku/ch-1.sh | 1 | ||||
| -rwxr-xr-x | challenge-067/jaldhar-h-vyas/raku/ch-2.p6 | 23 |
5 files changed, 126 insertions, 0 deletions
diff --git a/challenge-067/jaldhar-h-vyas/blog.txt b/challenge-067/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..da29e418d2 --- /dev/null +++ b/challenge-067/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2020/07/perl_weekly_challenge_week_67.html diff --git a/challenge-067/jaldhar-h-vyas/perl/ch-1.pl b/challenge-067/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..e39d1dadb2 --- /dev/null +++ b/challenge-067/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,45 @@ +#!/usr/bin/perl +use 5.030; +use warnings; +use English qw/ -no_match_vars /; + +sub usage { + print<<"-USAGE-"; +Usage: + $PROGRAM_NAME <m> <n> + + <m> range + <n> length of combination +-USAGE- + exit(0); +} + +sub combinations { + my @list = @{$_[0]}; + my $length = $_[1]; + + if ($length <= 1) { + return map [$_], @list; + } + + my @combos; + + for (my $i = 0; $i + $length <= scalar @list; $i++) { + my $val = $list[$i]; + my @rest = @list[$i + 1 .. $#list]; + for my $c (combinations(\@rest, $length - 1)) { + push @combos, [$val, @{$c}] ; + } + } + + return @combos; +} + +if (scalar @ARGV < 2) { + usage(); +} + +my ($m, $n) = @ARGV; + +my @result = combinations([1 .. $m], $n); +say q{[ }, (join q{, }, map { q{[} . (join q{,}, @{$_}) . q{]} } @result), q{ ]};
\ No newline at end of file diff --git a/challenge-067/jaldhar-h-vyas/perl/ch-2.pl b/challenge-067/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..cdd014bce2 --- /dev/null +++ b/challenge-067/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,56 @@ +#!/usr/bin/perl +use 5.030; +use warnings; +use English qw/ -no_match_vars /; + +sub usage { + print<<"-USAGE-"; +Usage: + $PROGRAM_NAME <S> + + <S> digit string (0 - 9, *, #) +-USAGE- + exit(0); +} + +sub X { + my @a = @{ $_[0] }; + my @b = @{ $_[1] }; + + return map { + my $first = $_; + map { + [ ref $first eq 'ARRAY' ? @{$first} : $first, $_ ]; + } @b; + } @a; +} + +if (scalar @ARGV < 1 || $ARGV[0] !~ /^ [0-9\*\#]+ $/msx) { + usage(); +} + +my $S = $ARGV[0]; + +my %digits = ( + 1 => [ q{_}, q{,}, q{@} ], + 2 => [qw/ a b c /], + 3 => [qw/ d e f /], + 4 => [qw/ g h i /], + 5 => [qw/ j k l /], + 6 => [qw/ m n o /], + 7 => [qw/ p q r s /], + 8 => [qw/ t u v /], + 9 => [qw/ w x y z /], + 0 => [ q{} ], + '*' => [ q{ } ], + '#' => [ q{} ], +); + +my @letters = map { $digits{$_} } split //, $S; +my @result = @{ $letters[0] }; + +for my $i (1 .. (scalar @letters) - 1 ) { + @result = X(\@result, $letters[$i]); +} + +say q{[}, (join q{, }, map { q{"} . (join q{}, @{$_}) . q{"} } @result), q{]};
\ No newline at end of file diff --git a/challenge-067/jaldhar-h-vyas/raku/ch-1.sh b/challenge-067/jaldhar-h-vyas/raku/ch-1.sh new file mode 100755 index 0000000000..c05f0c9eca --- /dev/null +++ b/challenge-067/jaldhar-h-vyas/raku/ch-1.sh @@ -0,0 +1 @@ +perl6 -e 'my ($m, $n) = @*ARGS; say q{[ }, (1 .. $m).combinations($n).map({ q{[} ~ @_.join(q{,}) ~ q{]} }).join(q{, }), q{ ]};' $@ diff --git a/challenge-067/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-067/jaldhar-h-vyas/raku/ch-2.p6 new file mode 100755 index 0000000000..ff4786dbe1 --- /dev/null +++ b/challenge-067/jaldhar-h-vyas/raku/ch-2.p6 @@ -0,0 +1,23 @@ +#!/usr/bin/perl6 + +multi sub MAIN( + Str $S where { $_ ~~ /^ <[0..9 \* \# ]>+ $/ }#= digit string (0 - 9, *, #) +) { + my %digits = + 1 => < _ , @ >, + 2 => < a b c >, + 3 => < d e f >, + 4 => < g h i >, + 5 => < j k l >, + 6 => < m n o >, + 7 => < p q r s >, + 8 => < t u v >, + 9 => < w x y z >, + 0 => [ q{} ], + '*' => [ q{ } ], + '#' => [ q{} ], + ; + + say q{[}, ([X] $S.comb.map({ %digits{$_} })).map({ q{"} ~ @_.join({}) ~ q{"} }).join(q{, }), q{]}; + +}
\ No newline at end of file |
