aboutsummaryrefslogtreecommitdiff
path: root/challenge-030
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-10-20 21:44:02 +0100
committerGitHub <noreply@github.com>2019-10-20 21:44:02 +0100
commite52654cf38c96aadc31066f49dda0bf6acbf936f (patch)
tree395f078067fe94a8e0170ec759470543e99dc079 /challenge-030
parent910df9e961c25059e7dda06044379e7a08f1e79a (diff)
parent8ffb81810ecd7813897e3a2a7b62d5f81647b61e (diff)
downloadperlweeklychallenge-club-e52654cf38c96aadc31066f49dda0bf6acbf936f.tar.gz
perlweeklychallenge-club-e52654cf38c96aadc31066f49dda0bf6acbf936f.tar.bz2
perlweeklychallenge-club-e52654cf38c96aadc31066f49dda0bf6acbf936f.zip
Merge pull request #813 from toshikFedotov/master
Added solutions by Anton Fedotov
Diffstat (limited to 'challenge-030')
-rw-r--r--challenge-030/anton-fedotov/perl5/ch-1.pl32
-rw-r--r--challenge-030/anton-fedotov/perl5/ch-2.pl28
2 files changed, 60 insertions, 0 deletions
diff --git a/challenge-030/anton-fedotov/perl5/ch-1.pl b/challenge-030/anton-fedotov/perl5/ch-1.pl
new file mode 100644
index 0000000000..5700bfb968
--- /dev/null
+++ b/challenge-030/anton-fedotov/perl5/ch-1.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use v5.10;
+
+my %dweeks = ( Sunday => 1, Monday => 2, Tuesday => 3, Wednesday => 4,
+ Thursday => 5, Friday => 6, Saturday => 7 );
+
+sub list_rep_years {
+ my ($start_y, $end_y, $start_dweek, $dweek) = @_;
+ my ( $dweek_count, @rep_years ) = $start_dweek;
+ for ( $start_y + 1 .. $end_y ) {
+ if ( ($_ % 4 == 0 && $_ % 100 != 0) || $_ % 400 == 0 ) { $dweek_count += 2; }
+ else { $dweek_count++; }
+ $dweek_count %= 7 if $dweek_count > 7;
+ push ( @rep_years, $_ ) if $dweek_count == $dweek;
+ }
+ return @rep_years;
+}
+
+sub find_sunday_christmas_years {
+ my ( $start_y, $end_y, $date) = ( 2019, 2100, '25 December');
+
+ my ( $start_year_dweek, $finding_years_dweek ) = ( $dweeks{'Wednesday'}, $dweeks{'Sunday'} );
+
+ my @years = list_rep_years( $start_y, $end_y, $start_year_dweek, $finding_years_dweek );
+
+ foreach (@years) { print "25 Dec $_ is Sunday\n"; }
+}
+
+find_sunday_christmas_years();
+
diff --git a/challenge-030/anton-fedotov/perl5/ch-2.pl b/challenge-030/anton-fedotov/perl5/ch-2.pl
new file mode 100644
index 0000000000..f6aa039ea2
--- /dev/null
+++ b/challenge-030/anton-fedotov/perl5/ch-2.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use v5.10;
+use Data::Dumper;
+
+my $sum = 12;
+my @numbers = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 );
+
+my @even_numbers;
+foreach (@numbers) { push(@even_numbers, $_) if $_ % 2 == 0; }
+
+my @series;
+
+while (my $even_n = shift @even_numbers) {
+ foreach ( @numbers ) {
+ next if $sum - $even_n - $_ <= 0;
+ push( @series, [$even_n, $_, $sum - $even_n - $_] );
+ }
+}
+
+foreach ( @series ) {
+ print join ', ', $_->[0], $_->[1], $_->[2];
+ print "\n";
+}
+
+
+