diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-04-12 19:35:52 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-04-12 19:35:52 -0400 |
| commit | a7659f38ae7947868a99f9cb246af95ccae12ad8 (patch) | |
| tree | 0653c0a98a1c90c4f7b9167a11b5dcabbcb73d73 | |
| parent | e31c45a5e1515c66143d4f70bb6e1a2476b48da4 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-055/jaldhar-h-vyas/perl/ch-1.pl | 42 | ||||
| -rwxr-xr-x | challenge-055/jaldhar-h-vyas/perl/ch-2.pl | 35 | ||||
| -rwxr-xr-x | challenge-055/jaldhar-h-vyas/raku/ch-1.p6 | 26 | ||||
| -rwxr-xr-x | challenge-055/jaldhar-h-vyas/raku/ch-2.p6 | 19 |
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 |
