aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandrezgz <andrezgz@gmail.com>2020-03-10 22:03:42 -0300
committerandrezgz <andrezgz@gmail.com>2020-03-10 22:03:42 -0300
commit4d40fa01d867c83205f94a67b221cb2aa7f3e98f (patch)
tree9dc442e396e2ee511e06e8a4d77a4d7cabd29d3d
parentd6075f2942c82753f2d9f77ba3fe43cb73ae9689 (diff)
downloadperlweeklychallenge-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.pl53
-rw-r--r--challenge-051/andrezgz/perl/ch-2.pl354
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