diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-10-20 21:44:02 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-20 21:44:02 +0100 |
| commit | e52654cf38c96aadc31066f49dda0bf6acbf936f (patch) | |
| tree | 395f078067fe94a8e0170ec759470543e99dc079 /challenge-030 | |
| parent | 910df9e961c25059e7dda06044379e7a08f1e79a (diff) | |
| parent | 8ffb81810ecd7813897e3a2a7b62d5f81647b61e (diff) | |
| download | perlweeklychallenge-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.pl | 32 | ||||
| -rw-r--r-- | challenge-030/anton-fedotov/perl5/ch-2.pl | 28 |
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"; +} + + + |
