aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-030/Leoltron/README1
-rw-r--r--challenge-030/Leoltron/perl5/ch-1.pl11
-rw-r--r--challenge-030/Leoltron/perl5/ch-2.pl22
3 files changed, 34 insertions, 0 deletions
diff --git a/challenge-030/Leoltron/README b/challenge-030/Leoltron/README
new file mode 100644
index 0000000000..28aeaf66ae
--- /dev/null
+++ b/challenge-030/Leoltron/README
@@ -0,0 +1 @@
+Solution by Leoltron
diff --git a/challenge-030/Leoltron/perl5/ch-1.pl b/challenge-030/Leoltron/perl5/ch-1.pl
new file mode 100644
index 0000000000..9b23635d2f
--- /dev/null
+++ b/challenge-030/Leoltron/perl5/ch-1.pl
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use 5.010;
+
+my $week_day = 2;
+for (2019 .. 2099) {
+ $week_day = ($week_day + ($_ % 4 == 0 ? 2 : 1)) % 7;
+ say $_ if $week_day == 0;
+}
diff --git a/challenge-030/Leoltron/perl5/ch-2.pl b/challenge-030/Leoltron/perl5/ch-2.pl
new file mode 100644
index 0000000000..d497106550
--- /dev/null
+++ b/challenge-030/Leoltron/perl5/ch-2.pl
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use 5.010;
+
+use List::Util qw(min);
+use POSIX qw(ceil);
+
+use constant SUM => 12;
+use constant MIN_FIRST => ceil(SUM / 3);
+use constant MAX_FIRST => SUM - 2;
+
+foreach my $first (MIN_FIRST .. MAX_FIRST) {
+ my $min_second = ceil((SUM -$first) / 2);
+ my $max_second = min($first, SUM - $first - 1);
+ foreach my $second ($min_second .. $max_second) {
+ my $third = SUM - $first - $second;
+ say "$first, $second, $third"
+ }
+}
+