diff options
| author | andrezgz <andrezgz@gmail.com> | 2020-03-10 22:03:42 -0300 |
|---|---|---|
| committer | andrezgz <andrezgz@gmail.com> | 2020-03-10 22:03:42 -0300 |
| commit | 4d40fa01d867c83205f94a67b221cb2aa7f3e98f (patch) | |
| tree | 9dc442e396e2ee511e06e8a4d77a4d7cabd29d3d | |
| parent | d6075f2942c82753f2d9f77ba3fe43cb73ae9689 (diff) | |
| download | perlweeklychallenge-club-4d40fa01d867c83205f94a67b221cb2aa7f3e98f.tar.gz perlweeklychallenge-club-4d40fa01d867c83205f94a67b221cb2aa7f3e98f.tar.bz2 perlweeklychallenge-club-4d40fa01d867c83205f94a67b221cb2aa7f3e98f.zip | |
challenge-051 andrezgz solution
| -rw-r--r-- | challenge-051/andrezgz/perl/ch-1.pl | 53 | ||||
| -rw-r--r-- | challenge-051/andrezgz/perl/ch-2.pl | 354 |
2 files changed, 407 insertions, 0 deletions
diff --git a/challenge-051/andrezgz/perl/ch-1.pl b/challenge-051/andrezgz/perl/ch-1.pl new file mode 100644 index 0000000000..756145c565 --- /dev/null +++ b/challenge-051/andrezgz/perl/ch-1.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-051/ +# Task #1 +# +# 3 Sum +# Given an array @L of 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. +# +# Here is wiki page for more information. +# https://en.wikipedia.org/wiki/3SUM +# +# Example: +# +# @L = (-25, -10, -7, -3, 2, 4, 8, 10); +# +# One such triplet for target 0 i.e. -10 + 2 + 8 = 0. + +use strict; +use warnings; + +use constant TARGET => 0; + +my $integers = join ',', @ARGV; +my @L = sort { $a <=> $b } grep {/-?\d+/} split /,/, $integers; + +die "At least 3 integers are needed" if @L < 3; + +my $triplets; +for my $i (0 .. $#L - 2) { + for my $j ($i+1 .. $#L - 1) { + for my $k ($j+1 .. $#L) { + next unless $L[$i] + $L[$j] + $L[$k] == TARGET; + my $key = join '#', $L[$i], $L[$j], $L[$k]; + $triplets->{$key}++; + } + } +} + +print 'Triplets for target '.TARGET."\n"; +printf "(%s,%s,%s)\n", split /#/ foreach keys %$triplets; + +__END__ + +./ch-1.pl -25, -10, -7, -3, 2, 4, 8, 10 +Triplets for target 0 +(-7,-3,10) +(-10,2,8) + +./ch-1.pl 1 2 -3 -3 -1 -1 +Triplets for target 0 +(-1,-1,2) +(-3,1,2) diff --git a/challenge-051/andrezgz/perl/ch-2.pl b/challenge-051/andrezgz/perl/ch-2.pl new file mode 100644 index 0000000000..ba8186e7a4 --- /dev/null +++ b/challenge-051/andrezgz/perl/ch-2.pl @@ -0,0 +1,354 @@ +#!/usr/bin/perl + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-051/ +# Task #2 +# +# Colourful Number +# Write a script to display all Colorful Number with 3 digits. +# +# A number can be declare Colorful Number where all the products of consecutive +# subsets of digit are different. +# +# For example, 263 is a Colorful Number since 2, 6, 3, 2x6, 6x3, 2x6x3 are unique. + +use strict; +use warnings; + +for my $n (100 .. 999) { + my %unique; + my ($f,$s,$t) = split //, $n; + @unique{$f, $s, $t, $f*$s, $s*$t, $f*$s*$t} = (1) x 6; + print $n.$/ if keys %unique == 6; +} + +__END__ + +./ch-2.pl +234 +235 +237 +238 +239 +243 +245 +246 +247 +249 +253 +254 +256 +257 +258 +259 +263 +264 +265 +267 +268 +269 +273 +274 +275 +276 +278 +279 +283 +284 +285 +286 +287 +289 +293 +294 +295 +296 +297 +298 +324 +325 +327 +328 +329 +342 +345 +346 +347 +348 +349 +352 +354 +356 +357 +358 +359 +362 +364 +365 +367 +368 +369 +372 +374 +375 +376 +378 +379 +382 +384 +385 +386 +387 +389 +392 +394 +395 +396 +397 +398 +423 +425 +426 +427 +429 +432 +435 +436 +437 +438 +439 +452 +453 +456 +457 +458 +459 +462 +463 +465 +467 +468 +469 +472 +473 +475 +476 +478 +479 +482 +483 +485 +486 +487 +489 +492 +493 +495 +496 +497 +498 +523 +524 +526 +527 +528 +529 +532 +534 +536 +537 +538 +539 +542 +543 +546 +547 +548 +549 +562 +563 +564 +567 +568 +569 +572 +573 +574 +576 +578 +579 +582 +583 +584 +586 +587 +589 +592 +593 +594 +596 +597 +598 +624 +625 +627 +628 +629 +634 +635 +637 +638 +639 +642 +643 +645 +647 +648 +649 +652 +653 +654 +657 +658 +659 +672 +673 +674 +675 +678 +679 +682 +683 +684 +685 +687 +689 +692 +693 +694 +695 +697 +698 +723 +724 +725 +726 +728 +729 +732 +734 +735 +736 +738 +739 +742 +743 +745 +746 +748 +749 +752 +753 +754 +756 +758 +759 +762 +763 +764 +765 +768 +769 +782 +783 +784 +785 +786 +789 +792 +793 +794 +795 +796 +798 +823 +825 +826 +827 +829 +832 +834 +835 +836 +837 +839 +843 +845 +846 +847 +849 +852 +853 +854 +856 +857 +859 +862 +863 +864 +865 +867 +869 +872 +873 +874 +875 +876 +879 +892 +893 +894 +895 +896 +897 +923 +924 +925 +926 +927 +928 +932 +934 +935 +936 +937 +938 +942 +943 +945 +946 +947 +948 +952 +953 +954 +956 +957 +958 +962 +963 +964 +965 +967 +968 +972 +973 +974 +975 +976 +978 +982 +983 +984 +985 +986 +987 |
