aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-102/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-102/jaldhar-h-vyas/perl/ch-1.pl37
-rwxr-xr-xchallenge-102/jaldhar-h-vyas/perl/ch-2.pl39
-rwxr-xr-xchallenge-102/jaldhar-h-vyas/raku/ch-1.raku31
-rwxr-xr-xchallenge-102/jaldhar-h-vyas/raku/ch-2.raku23
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