diff options
| -rw-r--r-- | challenge-070/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-070/jaldhar-h-vyas/perl/ch-1.pl | 40 | ||||
| -rwxr-xr-x | challenge-070/jaldhar-h-vyas/perl/ch-2.pl | 36 | ||||
| -rwxr-xr-x | challenge-070/jaldhar-h-vyas/raku/ch-1.p6 | 21 | ||||
| -rwxr-xr-x | challenge-070/jaldhar-h-vyas/raku/ch-2.p6 | 21 |
5 files changed, 119 insertions, 0 deletions
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 <C> <O> <S> + + <C> swap count + <O> offset + <S> 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 <N> + + <N> 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 |
