diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-10-05 19:42:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-05 19:42:25 +0100 |
| commit | c59ffb1a5097d715ebce7a56a744401e7c52c9f8 (patch) | |
| tree | 7e161d623654ecc56f53af89b6146146a401a8b6 | |
| parent | 9506417ade8b33371ed335c95719c3ad5bf83c33 (diff) | |
| parent | 96812376e8199fff9d427786c9316893d72bc32e (diff) | |
| download | perlweeklychallenge-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-x | challenge-203/jaldhar-h-vyas/perl/ch-1.pl | 36 | ||||
| -rwxr-xr-x | challenge-203/jaldhar-h-vyas/perl/ch-2.pl | 39 | ||||
| -rwxr-xr-x | challenge-203/jaldhar-h-vyas/raku/ch-1.raku | 16 | ||||
| -rwxr-xr-x | challenge-203/jaldhar-h-vyas/raku/ch-2.raku | 25 |
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; + } +} + |
