diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-21 16:07:38 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-21 16:07:38 +0000 |
| commit | 7e8e88e7faa5e8bc90b5ef0ca86094edb080d5ff (patch) | |
| tree | ef99c467da033877686b074148079989d531a74f /challenge-048 | |
| parent | 5d9f0f10599d57a2cfdd0013dedb75a435f2319d (diff) | |
| download | perlweeklychallenge-club-7e8e88e7faa5e8bc90b5ef0ca86094edb080d5ff.tar.gz perlweeklychallenge-club-7e8e88e7faa5e8bc90b5ef0ca86094edb080d5ff.tar.bz2 perlweeklychallenge-club-7e8e88e7faa5e8bc90b5ef0ca86094edb080d5ff.zip | |
- Added solutions by Arne Sommer.
Diffstat (limited to 'challenge-048')
| -rw-r--r-- | challenge-048/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-048/arne-sommer/raku/ch-1.p6 | 21 | ||||
| -rwxr-xr-x | challenge-048/arne-sommer/raku/ch-2.p6 | 25 | ||||
| -rwxr-xr-x | challenge-048/arne-sommer/raku/palindrome-date-loop | 25 | ||||
| -rwxr-xr-x | challenge-048/arne-sommer/raku/palindrome-date-object | 11 | ||||
| -rwxr-xr-x | challenge-048/arne-sommer/raku/palindrome-date-object2 | 12 | ||||
| -rwxr-xr-x | challenge-048/arne-sommer/raku/survivor | 21 | ||||
| -rw-r--r-- | challenge-048/mohammad-anwar/perl/ch-2.pl | 1 | ||||
| -rw-r--r-- | challenge-048/mohammad-anwar/raku/ch-2.p6 | 2 |
9 files changed, 117 insertions, 2 deletions
diff --git a/challenge-048/arne-sommer/blog.txt b/challenge-048/arne-sommer/blog.txt new file mode 100644 index 0000000000..97abe3101f --- /dev/null +++ b/challenge-048/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/surviving-dates.html diff --git a/challenge-048/arne-sommer/raku/ch-1.p6 b/challenge-048/arne-sommer/raku/ch-1.p6 new file mode 100755 index 0000000000..ca9519eaf1 --- /dev/null +++ b/challenge-048/arne-sommer/raku/ch-1.p6 @@ -0,0 +1,21 @@ +#! /usr/bin/env raku + +unit sub MAIN (:$verbose); + +my @people = 1 .. 50; + +my $next = 1; + +say ": @people[] [Index: $next]" if $verbose; + +while @people.elems > 1 +{ + my $killed = @people.splice($next, 1); + + $next++; + $next = 0 if $next > @people.end; + + say ": @people[] [K:$killed] [Next:$next]" if $verbose; +} + +say "Living: @people[]";
\ No newline at end of file diff --git a/challenge-048/arne-sommer/raku/ch-2.p6 b/challenge-048/arne-sommer/raku/ch-2.p6 new file mode 100755 index 0000000000..fe3f3a7547 --- /dev/null +++ b/challenge-048/arne-sommer/raku/ch-2.p6 @@ -0,0 +1,25 @@ +#! /usr/bin/env raku + +for 0..2 -> $y2 +{ + for 0..9 -> $y3 + { + for 0..1 -> $y4 + { + for 0..1 -> $m1 + { + for 0..9 -> $m2 + { + for 0..2 -> $d1 + { + next unless $m1 == $y4 && $m2 == $y3 && $d1 == $y2; + next if $m1 == 0 == $m2; + next if $m1 == 1 && $m2 > 2; + + say $m1 ~ $m2 ~ $d1 ~ '22' ~ $y2 ~ $y3 ~ $y4; + } + } + } + } + } +} diff --git a/challenge-048/arne-sommer/raku/palindrome-date-loop b/challenge-048/arne-sommer/raku/palindrome-date-loop new file mode 100755 index 0000000000..fe3f3a7547 --- /dev/null +++ b/challenge-048/arne-sommer/raku/palindrome-date-loop @@ -0,0 +1,25 @@ +#! /usr/bin/env raku + +for 0..2 -> $y2 +{ + for 0..9 -> $y3 + { + for 0..1 -> $y4 + { + for 0..1 -> $m1 + { + for 0..9 -> $m2 + { + for 0..2 -> $d1 + { + next unless $m1 == $y4 && $m2 == $y3 && $d1 == $y2; + next if $m1 == 0 == $m2; + next if $m1 == 1 && $m2 > 2; + + say $m1 ~ $m2 ~ $d1 ~ '22' ~ $y2 ~ $y3 ~ $y4; + } + } + } + } + } +} diff --git a/challenge-048/arne-sommer/raku/palindrome-date-object b/challenge-048/arne-sommer/raku/palindrome-date-object new file mode 100755 index 0000000000..ed0171be7f --- /dev/null +++ b/challenge-048/arne-sommer/raku/palindrome-date-object @@ -0,0 +1,11 @@ +#! /usr/bin/env raku + +my $date = Date.new('2000-01-01', + formatter => { sprintf "%02d%02d%04d", .month, .day, .year }); + +while $date.year < 3000 +{ + say $date if $date.Str eq $date.Str.flip; + + $date .= succ; +} diff --git a/challenge-048/arne-sommer/raku/palindrome-date-object2 b/challenge-048/arne-sommer/raku/palindrome-date-object2 new file mode 100755 index 0000000000..c8a2765db4 --- /dev/null +++ b/challenge-048/arne-sommer/raku/palindrome-date-object2 @@ -0,0 +1,12 @@ +#! /usr/bin/env raku + +my $date = Date.new('2000-01-01', + formatter => { sprintf "%02d%02d%04d", .month, .day, .year }); + +while $date.year < 3000 +{ + my $date-str = $date.Str; + say $date-str if $date-str eq $date-str.flip; + + $date .= succ; +} diff --git a/challenge-048/arne-sommer/raku/survivor b/challenge-048/arne-sommer/raku/survivor new file mode 100755 index 0000000000..ca9519eaf1 --- /dev/null +++ b/challenge-048/arne-sommer/raku/survivor @@ -0,0 +1,21 @@ +#! /usr/bin/env raku + +unit sub MAIN (:$verbose); + +my @people = 1 .. 50; + +my $next = 1; + +say ": @people[] [Index: $next]" if $verbose; + +while @people.elems > 1 +{ + my $killed = @people.splice($next, 1); + + $next++; + $next = 0 if $next > @people.end; + + say ": @people[] [K:$killed] [Next:$next]" if $verbose; +} + +say "Living: @people[]";
\ No newline at end of file diff --git a/challenge-048/mohammad-anwar/perl/ch-2.pl b/challenge-048/mohammad-anwar/perl/ch-2.pl index 6e1e51c504..5cc5cc7bdf 100644 --- a/challenge-048/mohammad-anwar/perl/ch-2.pl +++ b/challenge-048/mohammad-anwar/perl/ch-2.pl @@ -6,7 +6,6 @@ use Date::Tiny; my $date = Date::Tiny->new(year => 2000, month => 1, day => 1); -# Date cannot be higher than 31; thus year must be lower than 2300 while ($date->year <= 2299) { my $date_as_str = sprintf("%02d%02d%04d", $date->month, $date->day, $date->year); if ($date_as_str eq reverse($date_as_str)) { diff --git a/challenge-048/mohammad-anwar/raku/ch-2.p6 b/challenge-048/mohammad-anwar/raku/ch-2.p6 index 073072680b..ad2c46ef2b 100644 --- a/challenge-048/mohammad-anwar/raku/ch-2.p6 +++ b/challenge-048/mohammad-anwar/raku/ch-2.p6 @@ -5,7 +5,7 @@ use v6; sub MAIN() { my $fmt = { sprintf "%02d%02d%04d", .month, .day, .year }; my $date = Date.new(2000, 1, 1, formatter => $fmt); - while $date.year <= 2999 { + while $date.year <= 2299 { my $date-as-str = $date.Str; if $date-as-str eq $date-as-str.flip { say "$date-as-str is a Palindrome date."; |
