From 1fb124a6c45dc8959576fc7308d94f19f8a1f24e Mon Sep 17 00:00:00 2001 From: "Jaldhar H. Vyas" Date: Sun, 26 Jul 2020 16:26:27 -0400 Subject: Challenge 70 by Jaldhar H. Vyas --- challenge-070/jaldhar-h-vyas/blog.txt | 1 + challenge-070/jaldhar-h-vyas/perl/ch-1.pl | 40 +++++++++++++++++++++++++++++++ challenge-070/jaldhar-h-vyas/perl/ch-2.pl | 36 ++++++++++++++++++++++++++++ challenge-070/jaldhar-h-vyas/raku/ch-1.p6 | 21 ++++++++++++++++ challenge-070/jaldhar-h-vyas/raku/ch-2.p6 | 21 ++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 challenge-070/jaldhar-h-vyas/blog.txt create mode 100755 challenge-070/jaldhar-h-vyas/perl/ch-1.pl create mode 100755 challenge-070/jaldhar-h-vyas/perl/ch-2.pl create mode 100755 challenge-070/jaldhar-h-vyas/raku/ch-1.p6 create mode 100755 challenge-070/jaldhar-h-vyas/raku/ch-2.p6 diff --git a/challenge-070/jaldhar-h-vyas/blog.txt b/challenge-070/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..a9121e0061 --- /dev/null +++ b/challenge-070/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2020/07/perl_weekly_challenge_week_70.html diff --git a/challenge-070/jaldhar-h-vyas/perl/ch-1.pl b/challenge-070/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..7781460d53 --- /dev/null +++ b/challenge-070/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,40 @@ +#!/usr/bin/perl +use 5.020; +use warnings; +use English qw/ -no_match_vars- /; + +sub usage { + print<<"-USAGE-"; +Usage: + $PROGRAM_NAME + + swap count + offset + string (length <= count + offset) +-USAGE- + + exit(0); +} + + +if (scalar @ARGV < 3) { + usage(); +} + +my ($C, $O, $S) = @ARGV; +my $N = length $S; + +if ($C < 1 || $O < 1 || $C > $O || $C + $O > $N) { + usage(); +} + +my @chars = split //, $S; +for my $i (1 .. $C) { + my $a = $i % $N; + my $b = ($i + $O) % $N; + my $temp = $chars[$a]; + $chars[$a] = $chars[$b]; + $chars[$b] = $temp; +} + +say join q{}, @chars; diff --git a/challenge-070/jaldhar-h-vyas/perl/ch-2.pl b/challenge-070/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..b70c504ed1 --- /dev/null +++ b/challenge-070/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,36 @@ +#!/usr/bin/perl +use 5.020; +use warnings; +use English qw/ -no_match_vars- /; + +sub usage { + print<<"-USAGE-"; +Usage: + $PROGRAM_NAME + + bit length (2 - 5) +-USAGE- + + exit(0); +} + + +my $N = shift // usage(); + +if ($N < 2 || $N > 5) { + usage(); +} + +my @code = (0, 1, 3, 2); + +if ($N > 2) { + for my $i (3 .. $N) { + my @s1 = map { sprintf('%0*b', $i - 1, $_); } @code; + my @s2 = reverse @s1; + @s1 = map { "0b0$_"; } @s1; + @s2 = map { "0b1$_"; } @s2; + @code = map { oct $_; } @s1, @s2; + } +} + +say q{[}, (join q{, }, @code), q{]}; diff --git a/challenge-070/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-070/jaldhar-h-vyas/raku/ch-1.p6 new file mode 100755 index 0000000000..64815b468a --- /dev/null +++ b/challenge-070/jaldhar-h-vyas/raku/ch-1.p6 @@ -0,0 +1,21 @@ +#!/usr/bin/perl6 + +multi sub MAIN( + Int $C, #= swap count + Int $O, #= offset + Str $S #= string (length <= count + offset) + where { $C >= 1 && $O >= 1 && $C <= $O && ($C + $O) <= $S.chars} +) { + my $N = $S.chars; + my @chars = $S.comb; + + for 1 .. $C -> $i { + my $a = $i % $N; + my $b = ($i + $O) % $N; + my $temp = @chars[$a]; + @chars[$a] = @chars[$b]; + @chars[$b] = $temp; + } + + @chars.join(q{}).say; +} \ No newline at end of file diff --git a/challenge-070/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-070/jaldhar-h-vyas/raku/ch-2.p6 new file mode 100755 index 0000000000..7899125048 --- /dev/null +++ b/challenge-070/jaldhar-h-vyas/raku/ch-2.p6 @@ -0,0 +1,21 @@ +#!/usr/bin/perl6 + +multi sub MAIN( + Int $N #= bit length (2 - 5) + where { $N >= 2 && $N <= 5 } +) { + + my @code = (0, 1, 3, 2); + + if $N >2 { + for 3 .. $N -> $i { + my @s1 = @code.map({ sprintf('%0*b', $i - 1, $_); }); + my @s2 = @s1.reverse; + @s1 = @s1.map({ "0b0$_"; }); + @s2 = @s2.map({ "0b1$_"; }); + @code = @s1.push(| @s2).map({ +$_; }); + } + } + + say q{[}, @code.join(q{, }), q{]}; +} \ No newline at end of file -- cgit