aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-10-05 19:42:25 +0100
committerGitHub <noreply@github.com>2025-10-05 19:42:25 +0100
commitc59ffb1a5097d715ebce7a56a744401e7c52c9f8 (patch)
tree7e161d623654ecc56f53af89b6146146a401a8b6
parent9506417ade8b33371ed335c95719c3ad5bf83c33 (diff)
parent96812376e8199fff9d427786c9316893d72bc32e (diff)
downloadperlweeklychallenge-club-c59ffb1a5097d715ebce7a56a744401e7c52c9f8.tar.gz
perlweeklychallenge-club-c59ffb1a5097d715ebce7a56a744401e7c52c9f8.tar.bz2
perlweeklychallenge-club-c59ffb1a5097d715ebce7a56a744401e7c52c9f8.zip
Merge pull request #12785 from jaldhar/challenge-203
Challenge 203 by Jaldhar H. Vyas.
-rwxr-xr-xchallenge-203/jaldhar-h-vyas/perl/ch-1.pl36
-rwxr-xr-xchallenge-203/jaldhar-h-vyas/perl/ch-2.pl39
-rwxr-xr-xchallenge-203/jaldhar-h-vyas/raku/ch-1.raku16
-rwxr-xr-xchallenge-203/jaldhar-h-vyas/raku/ch-2.raku25
4 files changed, 116 insertions, 0 deletions
diff --git a/challenge-203/jaldhar-h-vyas/perl/ch-1.pl b/challenge-203/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..c856ac7947
--- /dev/null
+++ b/challenge-203/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub combinations {
+ my @list = @{$_[0]};
+ my $length = $_[1];
+
+ if ($length <= 1) {
+ return map [$_], @list;
+ }
+
+ my @combos;
+
+ for (my $i = 0; $i + $length <= scalar @list; $i++) {
+ my $val = $list[$i];
+ my @rest = @list[$i + 1 .. $#list];
+ for my $c (combinations(\@rest, $length - 1)) {
+ push @combos, [$val, @{$c}] ;
+ }
+ }
+
+ return @combos;
+}
+
+my @args = @ARGV;
+my @quadruplets;
+
+for my $combo (combinations(\@args, 4)) {
+ my @sorted = sort {$a <=> $b} @{$combo};
+ if ($sorted[0] + $sorted[1] + $sorted[2] == $sorted[3]) {
+ push @quadruplets, \@sorted;
+ }
+}
+
+say scalar @quadruplets;
diff --git a/challenge-203/jaldhar-h-vyas/perl/ch-2.pl b/challenge-203/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..3023d01f86
--- /dev/null
+++ b/challenge-203/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+use 5.038;
+use warnings;
+use File::Find;
+use File::Spec;
+
+my ($source, $target) = @ARGV;
+if (@ARGV != 2) {
+ die "Usage: $0 source_dir target_dir\n";
+}
+
+unless (-d $target) {
+ mkdir $target;
+}
+
+my @dirs;
+
+find(
+ {
+ wanted => sub {
+ if (-d) {
+ push @dirs, $File::Find::name;
+ }
+ },
+ no_chdir => 1,
+ },
+ $source
+);
+
+for my $dir (@dirs) {
+ if ($dir eq $source) {
+ next;
+ }
+
+ my $relPath = File::Spec->abs2rel($dir, $source);
+ my $newDir = File::Spec->catdir($target, $relPath);
+
+ mkdir $newDir;
+} \ No newline at end of file
diff --git a/challenge-203/jaldhar-h-vyas/raku/ch-1.raku b/challenge-203/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..e82a81467a
--- /dev/null
+++ b/challenge-203/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@args
+) {
+ my @quadruplets;
+
+ for @args.combinations(4) -> $combo {
+ my @sorted = @$combo.sort({$^a <=> $^b});
+ if @sorted[0] + @sorted[1] + @sorted[2] == @sorted[3] {
+ @quadruplets.push(@sorted);
+ }
+ }
+
+ @quadruplets.elems.say;
+} \ No newline at end of file
diff --git a/challenge-203/jaldhar-h-vyas/raku/ch-2.raku b/challenge-203/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..9dc21b2392
--- /dev/null
+++ b/challenge-203/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/raku
+use File::Find;
+
+sub MAIN(
+ Str $source, #= source directory path
+ Str $target #= target directory path
+) {
+ my $sio = $source.IO;
+ my $tio = $target.IO;
+
+ unless $tio.d {
+ mkdir $target;
+ }
+
+ my @dirs = find(dir => $sio, type => 'dir');
+
+ for @dirs -> $dir {
+
+ my $relPath = $dir.relative($sio);
+ my $newDir = $tio.add($relPath);
+
+ mkdir $newDir;
+ }
+}
+