diff options
| -rw-r--r-- | challenge-102/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-102/jaldhar-h-vyas/perl/ch-1.pl | 37 | ||||
| -rwxr-xr-x | challenge-102/jaldhar-h-vyas/perl/ch-2.pl | 39 | ||||
| -rwxr-xr-x | challenge-102/jaldhar-h-vyas/raku/ch-1.raku | 31 | ||||
| -rwxr-xr-x | challenge-102/jaldhar-h-vyas/raku/ch-2.raku | 23 |
5 files changed, 131 insertions, 0 deletions
diff --git a/challenge-102/jaldhar-h-vyas/blog.txt b/challenge-102/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..9c3aa9d03a --- /dev/null +++ b/challenge-102/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2021/03/perl_weekly_challenge_week_102.html diff --git a/challenge-102/jaldhar-h-vyas/perl/ch-1.pl b/challenge-102/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..361bcd86fe --- /dev/null +++ b/challenge-102/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,37 @@ +#!/usr/bin/perl +use 5.020; +use warnings; + +sub isRare { + my ($r, $r1) = @_; + my $x = sqrt($r + $r1); + if ($r1 > $r) { + return undef; + } + my $y = sqrt($r - $r1); + return $x == int($x) && $y == int($y); +} + +my ($N) = @ARGV; + +my $xfactor = $N < 3 ? 11 : 121; +my $yfactor = $N < 4 ? 11 : 1089; + +for my $n ((10 ** ($N - 1)) .. ((10 ** $N) - 1)) { + my $r = $n; + my $r1 = 0 + reverse "$n"; + + if ($r == $r1) { + next; + } + + if ($N % 2 == 0) { + if (($r + $r1) % $xfactor == 0 && isRare($r, $r1)) { + say $r; + } + } else { + if (($r - $r1) % $yfactor == 0 && isRare($r, $r1)) { + say $r; + } + } +} diff --git a/challenge-102/jaldhar-h-vyas/perl/ch-2.pl b/challenge-102/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..c40031e70a --- /dev/null +++ b/challenge-102/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,39 @@ +#!/usr/bin/perl +use 5.020; +use warnings; +use English qw/ -no_match_vars /; + +sub usage { + print<<"-USAGE-"; +Usage: + $PROGRAM_NAME <N> + + <N> length of hash-counting string +-USAGE- + + exit 0; +} + +if (scalar @ARGV != 1) { + usage; +} + +my ($N) = @ARGV; + +my $wasHash = 0; +my @hashCounting; +my $pos = $N; + +while ($pos > 0) { + if ($wasHash) { + unshift @hashCounting, "$wasHash"; + $pos -= length "$wasHash"; + $wasHash = 0; + } else { + unshift @hashCounting, '#'; + $wasHash = $pos; + $pos--; + } +} + +say join q{}, @hashCounting; diff --git a/challenge-102/jaldhar-h-vyas/raku/ch-1.raku b/challenge-102/jaldhar-h-vyas/raku/ch-1.raku new file mode 100755 index 0000000000..d70592cbac --- /dev/null +++ b/challenge-102/jaldhar-h-vyas/raku/ch-1.raku @@ -0,0 +1,31 @@ +#!/usr/bin/raku + +sub isRare(Int $r, Int $r1) { + return sqrt($r + $r1) %% 1 && sqrt($r - $r1) %% 1; +} + +sub MAIN( + Int $N #= length of rare number +) { + my $xfactor = $N < 3 ?? 11 !! 121; + my $yfactor = $N < 4 ?? 11 !! 1089; + + for (10 ** ($N - 1)) ..^ (10 ** $N) -> $n { + my $r = $n; + my $r1 = "$n".flip.Int; + + if ($r == $r1) { + next; + } + + if $N %% 2 { + if ($r + $r1) %% $xfactor && isRare($r, $r1) { + say $r; + } + } else { + if ($r - $r1) %% $yfactor && isRare($r, $r1) { + say $r; + } + } + } +}
\ No newline at end of file diff --git a/challenge-102/jaldhar-h-vyas/raku/ch-2.raku b/challenge-102/jaldhar-h-vyas/raku/ch-2.raku new file mode 100755 index 0000000000..9704be465d --- /dev/null +++ b/challenge-102/jaldhar-h-vyas/raku/ch-2.raku @@ -0,0 +1,23 @@ +#!/usr/bin/raku + +sub MAIN( + Int $N #= length of hash-counting string +) { + my $wasHash = 0; + my @hash-counting; + my $pos = $N; + + while $pos > 0 { + if $wasHash { + @hash-counting.unshift("$wasHash"); + $pos -= "$wasHash".chars; + $wasHash = 0; + } else { + @hash-counting.unshift('#'); + $wasHash = $pos; + $pos--; + } + } + + @hash-counting.join(q{}).say; +}
\ No newline at end of file |
