aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2021-10-16 21:53:56 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2021-10-16 22:23:38 -0400
commitdae847b44f0fe67abb123d6ff6b11fcb5ae9ea4d (patch)
treebf4d21c440ccfb04a98b7ab81eb3d16d6c5959c1
parente27b1c89d98074884a156bf6509cfbc92fa64dfa (diff)
downloadperlweeklychallenge-club-dae847b44f0fe67abb123d6ff6b11fcb5ae9ea4d.tar.gz
perlweeklychallenge-club-dae847b44f0fe67abb123d6ff6b11fcb5ae9ea4d.tar.bz2
perlweeklychallenge-club-dae847b44f0fe67abb123d6ff6b11fcb5ae9ea4d.zip
Challenge 134 by Jaldhar H. Vyas.
-rw-r--r--challenge-134/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-134/jaldhar-h-vyas/perl/ch-1.pl23
-rwxr-xr-xchallenge-134/jaldhar-h-vyas/perl/ch-2.pl41
-rwxr-xr-xchallenge-134/jaldhar-h-vyas/raku/ch-1.raku14
-rwxr-xr-xchallenge-134/jaldhar-h-vyas/raku/ch-2.raku29
5 files changed, 108 insertions, 0 deletions
diff --git a/challenge-134/jaldhar-h-vyas/blog.txt b/challenge-134/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..ff7b764db1
--- /dev/null
+++ b/challenge-134/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/10/perl_weekly_challenge_week_134.html
diff --git a/challenge-134/jaldhar-h-vyas/perl/ch-1.pl b/challenge-134/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..4afd17d404
--- /dev/null
+++ b/challenge-134/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+sub permute (&@) {
+ my $code = shift;
+ my @idx = 0..$#_;
+ while ( $code->(@_[@idx]) ) {
+ my $p = $#idx;
+ --$p while $idx[$p-1] > $idx[$p];
+ my $q = $p or return;
+ push @idx, reverse splice @idx, $p;
+ ++$q while $idx[$p-1] > $idx[$q];
+ @idx[$p-1,$q]=@idx[$q,$p-1];
+ }
+}
+
+my $prefix = '102345';
+
+my @permutations;
+permute { push @permutations, \@_; } qw/ 6 7 8 9 /;
+say join q{ }, sort { $a <=> $b }
+ (map { "$prefix$_" } map {join q{}, @{$_}; } @permutations)[0 .. 9];
diff --git a/challenge-134/jaldhar-h-vyas/perl/ch-2.pl b/challenge-134/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..eb5d1e27a0
--- /dev/null
+++ b/challenge-134/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <m> <n>
+-USAGE-
+ exit 0;
+}
+
+if (scalar @ARGV != 2) {
+ usage;
+}
+
+my ($m, $n) = @ARGV;
+
+my $mlength = length $m;
+my $nlength = length $n;
+my $mnlength = length ($m * $n);
+my %terms;
+
+say q{}, (sprintf "% ${\($mlength + 2)}s", 'x |'),
+ map { sprintf "% ${\($mnlength)}s ", $_} 1 .. $n;
+say q{-} x ($mlength + 1), q{+}, q{-} x ($n * ($mnlength + 1) - 1);
+
+for my $em (1 .. $m) {
+ printf "% ${\($mlength)}s |", $em;
+ for my $en (1 .. $n) {
+ my $term = $em * $en;
+ $terms{$term}++;
+ printf "% ${\($mnlength)}s ", $term;
+ }
+ print "\n";
+}
+print("\n");
+
+say 'Distinct Terms: ', join q{, }, sort { $a <=> $b } keys %terms;
+say 'Count: ', scalar keys %terms;
diff --git a/challenge-134/jaldhar-h-vyas/raku/ch-1.raku b/challenge-134/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..be4df71c3b
--- /dev/null
+++ b/challenge-134/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,14 @@
+#!/usr/bin/raku
+
+sub MAIN {
+
+ my $prefix = '102345';
+
+ (<6 7 8 9>
+ .permutations
+ .map({ $_.join })
+ .map({ $prefix ~ $_ })
+ .sort({$^a <=> $^b}))[^10]
+ .join(q{ })
+ .say;
+} \ No newline at end of file
diff --git a/challenge-134/jaldhar-h-vyas/raku/ch-2.raku b/challenge-134/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..e466013a4c
--- /dev/null
+++ b/challenge-134/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,29 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ Int $m,
+ Int $n
+) {
+ my $mlength = $m.chars;
+ my $nlength = $n.chars;
+ my $mnlength = ($m * $n).chars;
+ my %terms;
+
+ say sprintf("% {$mlength + 2}s", 'x |'),
+ (1 .. $n).fmt("% {$mnlength}s", q{ });
+ say q{-} x $mlength + 1, q{+}, q{-} x ($n * ($mnlength + 1) - 1);
+
+ for (1 .. $m) -> $em {
+ printf("% {$mlength}s |", $em);
+ for (1 .. $n) -> $en {
+ my $term = $em * $en;
+ %terms{$term}++;
+ printf("% {$mnlength}s ", $term);
+ }
+ print("\n");
+ }
+ print("\n");
+
+ say 'Distinct Terms: ', %terms.keys.sort({ $^a <=> $^b }).join(q{, });
+ say 'Count: ', %terms.keys.elems;
+}