diff options
| -rw-r--r-- | challenge-192/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-192/jaldhar-h-vyas/perl/ch-1.pl | 8 | ||||
| -rwxr-xr-x | challenge-192/jaldhar-h-vyas/perl/ch-2.pl | 79 | ||||
| -rwxr-xr-x | challenge-192/jaldhar-h-vyas/raku/ch-1.raku | 6 | ||||
| -rwxr-xr-x | challenge-192/jaldhar-h-vyas/raku/ch-2.raku | 49 |
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 |
