aboutsummaryrefslogtreecommitdiff
path: root/challenge-067
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-07-06 00:15:36 +0100
committerGitHub <noreply@github.com>2020-07-06 00:15:36 +0100
commit7801b197f2379e3dbe06268e04bddc2c116ff0b4 (patch)
tree598db65411d0a3d7f60805354f385c1dd039d34a /challenge-067
parent790c4755d665754e9e45935955b2b518af5ca143 (diff)
parente8963e0eeffa77601db5a9a98a2caf6780b07193 (diff)
downloadperlweeklychallenge-club-7801b197f2379e3dbe06268e04bddc2c116ff0b4.tar.gz
perlweeklychallenge-club-7801b197f2379e3dbe06268e04bddc2c116ff0b4.tar.bz2
perlweeklychallenge-club-7801b197f2379e3dbe06268e04bddc2c116ff0b4.zip
Merge pull request #1907 from jaldhar/challenge-067
Challenge 67 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-067')
-rw-r--r--challenge-067/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-067/jaldhar-h-vyas/perl/ch-1.pl45
-rwxr-xr-xchallenge-067/jaldhar-h-vyas/perl/ch-2.pl56
-rwxr-xr-xchallenge-067/jaldhar-h-vyas/raku/ch-1.sh1
-rwxr-xr-xchallenge-067/jaldhar-h-vyas/raku/ch-2.p623
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