diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2021-10-16 21:53:56 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2021-10-16 22:23:38 -0400 |
| commit | dae847b44f0fe67abb123d6ff6b11fcb5ae9ea4d (patch) | |
| tree | bf4d21c440ccfb04a98b7ab81eb3d16d6c5959c1 | |
| parent | e27b1c89d98074884a156bf6509cfbc92fa64dfa (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-134/jaldhar-h-vyas/perl/ch-1.pl | 23 | ||||
| -rwxr-xr-x | challenge-134/jaldhar-h-vyas/perl/ch-2.pl | 41 | ||||
| -rwxr-xr-x | challenge-134/jaldhar-h-vyas/raku/ch-1.raku | 14 | ||||
| -rwxr-xr-x | challenge-134/jaldhar-h-vyas/raku/ch-2.raku | 29 |
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; +} |
