From 2172c8c0f6ec5faa8ac2f2dd99b1e91f5162878c Mon Sep 17 00:00:00 2001 From: Carlos Eduardo de Oliveira Date: Tue, 7 Feb 2023 20:59:38 -0300 Subject: solution to challenge 203 --- challenge-203/carlos-oliveira/perl/ch-1.pl | 25 +++++++++++++++++++++++++ challenge-203/carlos-oliveira/perl/ch-2.pl | 29 +++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 challenge-203/carlos-oliveira/perl/ch-1.pl create mode 100644 challenge-203/carlos-oliveira/perl/ch-2.pl diff --git a/challenge-203/carlos-oliveira/perl/ch-1.pl b/challenge-203/carlos-oliveira/perl/ch-1.pl new file mode 100644 index 0000000000..18a3893ad2 --- /dev/null +++ b/challenge-203/carlos-oliveira/perl/ch-1.pl @@ -0,0 +1,25 @@ +use strict; +use warnings; +use v5.36; + +use Test::More; + +sub count_special_quadruplets { + my $quadruplet_count = 0; + for my $a (0 .. $#_ - 3) { + for my $b ($a + 1 .. $#_ - 2) { + for my $c ($b + 1 .. $#_ - 1) { + for my $d ($c + 1 .. $#_) { + $quadruplet_count++ if $_[$a] + $_[$b] + $_[$c] == $_[$d]; + } + } + } + } + return $quadruplet_count; +} + +is count_special_quadruplets(1,2,3,6), 1; +is count_special_quadruplets(1,1,1,3,5), 4; +is count_special_quadruplets(3,3,6,4,5), 0; + +done_testing; diff --git a/challenge-203/carlos-oliveira/perl/ch-2.pl b/challenge-203/carlos-oliveira/perl/ch-2.pl new file mode 100644 index 0000000000..79c1347ccd --- /dev/null +++ b/challenge-203/carlos-oliveira/perl/ch-2.pl @@ -0,0 +1,29 @@ +use v5.36; +use strict; +use warnings; + +use Const::Fast; + +sub copy_only_directories; + +sub copy_only_directories ($source, $target) { + opendir(my $dir, $source) or die "Can't open directory: $source"; + while (my $entry = readdir $dir) { + const my $source_entry => "$source/$entry"; + next unless -d $source_entry && $entry !~ /^[.]{1,2}$/; + const my $dest_entry => "$target/$entry"; + mkdir $dest_entry or die "Can't create directory: $dest_entry"; + copy_only_directories $source_entry, $dest_entry; + } + closedir $dir; +} + +unless (@ARGV == 2) { + die "USAGE: $0 source/dir target/dir"; +} + +unless (-d $ARGV[1]) { + mkdir $ARGV[1] or die "Can't create directory: $ARGV[1]"; +} + +copy_only_directories $ARGV[0], $ARGV[1]; -- cgit