aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-249/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-249/jaldhar-h-vyas/perl/ch-1.pl24
-rwxr-xr-xchallenge-249/jaldhar-h-vyas/perl/ch-2.pl21
-rwxr-xr-xchallenge-249/jaldhar-h-vyas/raku/ch-1.raku16
-rwxr-xr-xchallenge-249/jaldhar-h-vyas/raku/ch-2.raku21
5 files changed, 83 insertions, 0 deletions
diff --git a/challenge-249/jaldhar-h-vyas/blog.txt b/challenge-249/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..76808547d1
--- /dev/null
+++ b/challenge-249/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2024/01/perl_weekly_challenge_week_249.html
diff --git a/challenge-249/jaldhar-h-vyas/perl/ch-1.pl b/challenge-249/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..045cacbe10
--- /dev/null
+++ b/challenge-249/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+my @ints = @ARGV;
+
+my %elements;
+for my $int (@ints) {
+ $elements{$int}++;
+}
+
+my @output;
+for my $k (keys %elements) {
+ if (scalar $elements{$k} % 2 == 1) {
+ say '()';
+ exit;
+ }
+
+ for (0 .. $elements{$k} / 2 - 1) {
+ push @output, [ $k, $k ];
+ }
+}
+
+say join q{, }, map { q{(} . (join q{, }, @{$_} ) . q{)} } @output;
diff --git a/challenge-249/jaldhar-h-vyas/perl/ch-2.pl b/challenge-249/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..843e839e0d
--- /dev/null
+++ b/challenge-249/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,21 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+my $str = shift;
+
+my @chars = split //, $str;
+my @numbers = 0 .. length $str;
+my @s;
+
+for my $c (@chars) {
+ if ($c eq 'D') {
+ push @s, pop @numbers;
+ }
+ if ($c eq 'I') {
+ push @s, shift @numbers;
+ }
+}
+push @s, shift @numbers;
+
+say q{(}, (join q{, }, @s), q{)};
diff --git a/challenge-249/jaldhar-h-vyas/raku/ch-1.raku b/challenge-249/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..00c7074a99
--- /dev/null
+++ b/challenge-249/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@ints
+) {
+ @ints.classify({ $_ }, :into(my %elements;) );
+ if all %elements.values.map({ @$_.elems % 2 == 0 }) {
+ %elements.values
+ .map({| @$_.batch(2) })
+ .map({ q{(} ~ @$_.join(q{, }) ~ q{)} })
+ .join(q{, })
+ .say;
+ } else {
+ say '()';
+ }
+}
diff --git a/challenge-249/jaldhar-h-vyas/raku/ch-2.raku b/challenge-249/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..dad4f8fcaf
--- /dev/null
+++ b/challenge-249/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ Str $str
+) {
+ my @chars = $str.comb;
+ my @numbers = 0 .. $str.chars;
+ my @s;
+
+ for @chars -> $c {
+ if $c eq 'D' {
+ @s.push(@numbers.pop);
+ }
+ if $c eq 'I' {
+ @s.push(@numbers.shift);
+ }
+ }
+ @s.push(@numbers.shift);
+
+ say q{(}, @s.join(q{, }), q{)};
+}