aboutsummaryrefslogtreecommitdiff
path: root/challenge-048
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-048')
-rw-r--r--challenge-048/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-048/arne-sommer/raku/ch-1.p621
-rwxr-xr-xchallenge-048/arne-sommer/raku/ch-2.p625
-rwxr-xr-xchallenge-048/arne-sommer/raku/palindrome-date-loop25
-rwxr-xr-xchallenge-048/arne-sommer/raku/palindrome-date-object11
-rwxr-xr-xchallenge-048/arne-sommer/raku/palindrome-date-object212
-rwxr-xr-xchallenge-048/arne-sommer/raku/survivor21
-rw-r--r--challenge-048/mohammad-anwar/perl/ch-2.pl1
-rw-r--r--challenge-048/mohammad-anwar/raku/ch-2.p62
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.";