aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2020-04-12 19:35:52 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2020-04-12 19:35:52 -0400
commita7659f38ae7947868a99f9cb246af95ccae12ad8 (patch)
tree0653c0a98a1c90c4f7b9167a11b5dcabbcb73d73
parente31c45a5e1515c66143d4f70bb6e1a2476b48da4 (diff)
downloadperlweeklychallenge-club-a7659f38ae7947868a99f9cb246af95ccae12ad8.tar.gz
perlweeklychallenge-club-a7659f38ae7947868a99f9cb246af95ccae12ad8.tar.bz2
perlweeklychallenge-club-a7659f38ae7947868a99f9cb246af95ccae12ad8.zip
Challenge 55 by Jaldhar H. Vyas
-rw-r--r--challenge-055/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-055/jaldhar-h-vyas/perl/ch-1.pl42
-rwxr-xr-xchallenge-055/jaldhar-h-vyas/perl/ch-2.pl35
-rwxr-xr-xchallenge-055/jaldhar-h-vyas/raku/ch-1.p626
-rwxr-xr-xchallenge-055/jaldhar-h-vyas/raku/ch-2.p619
5 files changed, 123 insertions, 0 deletions
diff --git a/challenge-055/jaldhar-h-vyas/blog.txt b/challenge-055/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..b181e59e89
--- /dev/null
+++ b/challenge-055/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/04/perl_weekly_challenge_week_55.html
diff --git a/challenge-055/jaldhar-h-vyas/perl/ch-1.pl b/challenge-055/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..c36eade802
--- /dev/null
+++ b/challenge-055/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+use English qw/ -no_match_vars- /;
+
+sub usage {
+print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <binary>
+-USAGE-
+
+ exit(0);
+}
+
+my $binary = shift // usage();
+if ($binary !~ /^[01]+$/) {
+ usage();
+}
+
+my %lengths;
+
+for my $l (0 .. (length $binary) - 1) {
+ for my $r (0 .. (length $binary) - 1) {
+ my @digits = split //, $binary;
+ for my $i ($l .. $r) {
+ $digits[$i] = ($digits[$i] == '0') ? '1' : '0';
+ }
+
+ my $ones = grep /1/, @digits;
+ if ($ones) {
+ push @{$lengths{$ones}}, [$l, $r];
+ }
+ }
+}
+
+my $max = (sort { $b <=> $a } keys %lengths)[0];
+if ($max) {
+ for my $pair (@{$lengths{$max}}) {
+ say "($pair->[0],$pair->[1])";
+ }
+} \ No newline at end of file
diff --git a/challenge-055/jaldhar-h-vyas/perl/ch-2.pl b/challenge-055/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..0a21692cd3
--- /dev/null
+++ b/challenge-055/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+use English qw/ -no_match_vars- /;
+
+sub usage {
+print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME [<numbers> ...]
+-USAGE-
+
+ exit(0);
+}
+
+ if (!scalar @ARGV) {
+ usage();
+ }
+
+my @numbers = sort @ARGV;
+my @wave;
+
+my $mid = (scalar @numbers) / 2;
+my $end = (scalar @numbers) - 1;
+
+for my $i (0 .. $mid - 1) {
+ push @wave, $numbers[$end--];
+ push @wave, $numbers[$i];
+}
+if (scalar @numbers % 2) {
+ push @wave, $numbers[$mid];
+}
+
+say join q{,}, @wave;
+
diff --git a/challenge-055/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-055/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..6d54afcb0b
--- /dev/null
+++ b/challenge-055/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,26 @@
+#!/usr/bin/perl6
+
+multi sub MAIN(Str $binary where { /^ [0 || 1]+ $/ }) {
+ my %lengths;
+
+ for 0 ..^ $binary.chars -> $l {
+ for 0 ..^ $binary.chars -> $r {
+ my @digits = $binary.comb;
+ for $l .. $r -> $i {
+ @digits[$i] = (@digits[$i] == '0') ?? '1' !! '0';
+ }
+
+ my $ones = (@digits.grep(1)).elems;
+ if $ones {
+ %lengths{$ones}.push([$l, $r]);
+ }
+ }
+ }
+
+ my $max = (%lengths.keys.sort({ $^b <=> $^a}))[0];
+ if ($max) {
+ for %lengths{$max}.Array -> $pair {
+ say '(', $pair.join(q{,}), ')';
+ }
+ }
+} \ No newline at end of file
diff --git a/challenge-055/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-055/jaldhar-h-vyas/raku/ch-2.p6
new file mode 100755
index 0000000000..acb0ebf789
--- /dev/null
+++ b/challenge-055/jaldhar-h-vyas/raku/ch-2.p6
@@ -0,0 +1,19 @@
+#!/usr/bin/perl6
+
+multi sub MAIN(*@ARGS where { @*ARGS.elems }) {
+ my @numbers = @*ARGS.sort;
+ my @wave;
+
+ my $mid = @numbers.elems div 2;
+ my $end = @numbers.elems - 1;
+
+ for 0 ..^ $mid -> $i {
+ @wave.push(@numbers[$end--]);
+ @wave.push(@numbers[$i]);
+ }
+ if @numbers.elems % 2 {
+ @wave.push(@numbers[$mid]);
+ }
+
+ say join q{,}, @wave;
+} \ No newline at end of file