diff options
| -rw-r--r-- | challenge-051/alicia-bielsa/perl/ch-1.pl | 22 | ||||
| -rw-r--r-- | challenge-051/alicia-bielsa/perl/ch-2.pl | 62 | ||||
| -rwxr-xr-x | challenge-051/alicia-bielsa/raku/ch-1.p6 | 23 |
3 files changed, 107 insertions, 0 deletions
diff --git a/challenge-051/alicia-bielsa/perl/ch-1.pl b/challenge-051/alicia-bielsa/perl/ch-1.pl new file mode 100644 index 0000000000..d1f0a7c1e8 --- /dev/null +++ b/challenge-051/alicia-bielsa/perl/ch-1.pl @@ -0,0 +1,22 @@ +use strict; +use warnings; + +#3 Sum + +#Given an array @Lof integers. +#Write a script to find all unique triplets such that a + b + c is same as the given target T. +#Also make sure a <= b <= c. + +my $target = 0; +my @L = sort(-25, -7, -3, 2, 4, -10,8, 10); + +foreach my $a (0..$#L){ + foreach my $b ($a+1..$#L){ + foreach my $c ($b+1..$#L){ + if ( ($L[$a] + $L[$b] + $L[$c]) == $target){ + print $L[$a]." + ".$L[$b]." + ".$L[$c]." = $target.\n"; + } + } + } +} + diff --git a/challenge-051/alicia-bielsa/perl/ch-2.pl b/challenge-051/alicia-bielsa/perl/ch-2.pl new file mode 100644 index 0000000000..4d4810fad5 --- /dev/null +++ b/challenge-051/alicia-bielsa/perl/ch-2.pl @@ -0,0 +1,62 @@ +use strict; +use warnings; +use Data::Dumper; +use Test::More tests => 4; + + + +my %hTestSet = ( '1' => { given => 263, + expected => 1 + }, + '2' => { given => 2257, + expected => 0 + }, + '3' => { given => 2631, + expected => 0 + }, + '4' => { given => 258, + expected => 1 + } + ); + +foreach my $testSet (sort keys %hTestSet){ + $hTestSet{$testSet}{result} = isColorful( $hTestSet{$testSet}{given}); +} + + +foreach my $testSet (sort keys %hTestSet ){ + my $result = 'Colorful'; + if (!$hTestSet{$testSet}{result} ){ + $result = 'Not '.$result; + } + is ($hTestSet{$testSet}{result} , $hTestSet{$testSet}{expected} ,"Test $testSet $hTestSet{$testSet}{given} $result"); +} + +sub isColorful { + my $number = shift; + my @aDigits = split ('', $number); + my %hProducts = (); + my $lengthNumber = scalar(@aDigits); + foreach my $subset (1..$lengthNumber){ + foreach my $i (0..$#aDigits){ + my $setFound = 1; + my $product = 1; + foreach my $s (0..$subset-1){ + if (defined $aDigits[$i+$s]){ + $product *= $aDigits[$i+$s]; + } else { + $setFound = 0; + } + } + if ($setFound){ + if (exists $hProducts{$product}){ + return 0; + } else { + $hProducts{$product} = 1; + } + } + } + } + return 1; +} + diff --git a/challenge-051/alicia-bielsa/raku/ch-1.p6 b/challenge-051/alicia-bielsa/raku/ch-1.p6 new file mode 100755 index 0000000000..4eb77c933f --- /dev/null +++ b/challenge-051/alicia-bielsa/raku/ch-1.p6 @@ -0,0 +1,23 @@ +use v6; + +#3 Sum + +#Given an array @Lof integers. +#Write a script to find all unique triplets such that a + b + c is same as the given target T. +#Also make sure a <= b <= c. + +my $target = 0; +my @L = sort(-25, -7, -3, 2, 4, -10,8, 10); + +for 0..@L.end { + my $a = $_; + for $a+1..@L.end { + my $b = $_; + for $b+1..@L.end { + my $c = $_; + if (@L[$a] + @L[$b] + @L[$c]) == $target { + say "@L[$a] + @L[$b] + @L[$c] = $target"; + } + } + } +} |
