aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-192/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-192/jaldhar-h-vyas/perl/ch-1.pl8
-rwxr-xr-xchallenge-192/jaldhar-h-vyas/perl/ch-2.pl79
-rwxr-xr-xchallenge-192/jaldhar-h-vyas/raku/ch-1.raku6
-rwxr-xr-xchallenge-192/jaldhar-h-vyas/raku/ch-2.raku49
5 files changed, 143 insertions, 0 deletions
diff --git a/challenge-192/jaldhar-h-vyas/blog.txt b/challenge-192/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..31c22d72eb
--- /dev/null
+++ b/challenge-192/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2022/11/perl_weekly_challenge_week_192.html \ No newline at end of file
diff --git a/challenge-192/jaldhar-h-vyas/perl/ch-1.pl b/challenge-192/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..1fd443213e
--- /dev/null
+++ b/challenge-192/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,8 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+my $n = shift // die "Need a positive integer!\n";
+
+my $flip = sprintf("%b", $n);
+say oct '0b' . ($flip ^ (1 x (length $flip)));
diff --git a/challenge-192/jaldhar-h-vyas/perl/ch-2.pl b/challenge-192/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..74df5b6a48
--- /dev/null
+++ b/challenge-192/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub all {
+ my ($arr, $val) = @_;
+
+ for my $elem (@{$arr}) {
+ if ($elem != $val) {
+ return undef;
+ }
+ }
+ return 1;
+}
+
+sub sum {
+ my ($arr) = @_;
+ my $total = 0;
+
+ for my $elem (@{$arr}) {
+ $total += $elem;
+ }
+
+ return $total;
+}
+
+sub isEvenlyDivisible {
+ my ($arr) = @_;
+
+ return sum($arr) % (scalar @{$arr}) == 0;
+}
+
+my @n = @ARGV;
+
+my $moves;
+
+if (!isEvenlyDivisible(\@n)) {
+ $moves = -1;
+} else {
+
+ my $balance = sum(\@n) / scalar @n;
+ my $end = scalar @n - 1;
+
+ until (all(\@n, $balance)) {
+ for my $i (0 .. $end) {
+ if ($n[$i] == 0) {
+ next;
+ }
+ elsif ($n[$i] < $balance) {
+ if ($i > 0 && $n[$i - 1] > $n[$i]) {
+ $n[$i - 1]--;
+ $n[$i]++;
+ $moves++;
+ }
+
+ if ($i < $end && $n[$i + 1] > $n[$i]) {
+ $n[$i + 1]--;
+ $n[$i]++;
+ $moves++;
+ }
+ }
+ elsif ($n[$i] > $balance) {
+ if ($i > 0 && $n[$i - 1] < $n[$i]) {
+ $n[$i - 1]++;
+ $n[$i]--;
+ $moves++;
+ }
+
+ if ($i < $end && $n[$i + 1] < $n[$i]) {
+ $n[$i + 1]++;
+ $n[$i]--;
+ $moves++;
+ }
+ }
+ }
+ }
+}
+
+say $moves;
diff --git a/challenge-192/jaldhar-h-vyas/raku/ch-1.raku b/challenge-192/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..da2224411b
--- /dev/null
+++ b/challenge-192/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,6 @@
+#!/usr/bin/raku
+
+sub MAIN(Int $n) {
+ my $flip = $n.base(2);
+ say (:2($flip) +^ :2(1 x $flip.chars));
+} \ No newline at end of file
diff --git a/challenge-192/jaldhar-h-vyas/raku/ch-2.raku b/challenge-192/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..9c4e6754b6
--- /dev/null
+++ b/challenge-192/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,49 @@
+#!/usr/bin/raku
+
+sub MAIN(*@n) {
+ my $moves;
+
+ if @n.sum !%% @n.elems {
+ $moves = -1;
+ } else {
+
+ my $balance = @n.sum div @n.elems;
+ my @m = @n;
+
+ until @m.all == $balance {
+ for 0 .. @m.end -> $i {
+ if @m[$i] == 0 {
+ next;
+ }
+ elsif @m[$i] < $balance {
+ if $i > 0 && @m[$i - 1] > @m[$i] {
+ @m[$i - 1]--;
+ @m[$i]++;
+ $moves++;
+ }
+
+ if $i < @m.end && @m[$i + 1] > @m[$i] {
+ @m[$i + 1]--;
+ @m[$i]++;
+ $moves++;
+ }
+ }
+ elsif @m[$i] > $balance {
+ if $i > 0 && @m[$i - 1] < @m[$i] {
+ @m[$i - 1]++;
+ @m[$i]--;
+ $moves++;
+ }
+
+ if $i < @m.end && @m[$i + 1] < @m[$i] {
+ @m[$i + 1]++;
+ @m[$i]--;
+ $moves++;
+ }
+ }
+ }
+ }
+ }
+
+ say $moves;
+} \ No newline at end of file