aboutsummaryrefslogtreecommitdiff
path: root/challenge-069
diff options
context:
space:
mode:
authorSimon Proctor <simon.proctor@zoopla.co.uk>2020-07-21 08:59:45 +0100
committerSimon Proctor <simon.proctor@zoopla.co.uk>2020-07-21 08:59:45 +0100
commit00dddf1071853ee82cb8a3751d6db2d1711f7514 (patch)
tree39734250c4ba7316ab34ba887e00c49bc49cef3e /challenge-069
parentd483d9c1808a03602a1fe2b1fd4569b0f53888cc (diff)
parentd96c3b3776fbb99ff873a07312075e0d34ea77c1 (diff)
downloadperlweeklychallenge-club-00dddf1071853ee82cb8a3751d6db2d1711f7514.tar.gz
perlweeklychallenge-club-00dddf1071853ee82cb8a3751d6db2d1711f7514.tar.bz2
perlweeklychallenge-club-00dddf1071853ee82cb8a3751d6db2d1711f7514.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-069')
-rw-r--r--challenge-069/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-069/arne-sommer/perl/01-string-perl23
-rwxr-xr-xchallenge-069/arne-sommer/perl/ch-1.pl45
-rwxr-xr-xchallenge-069/arne-sommer/perl/ch-2.pl23
-rwxr-xr-xchallenge-069/arne-sommer/perl/strobonum-perl45
-rwxr-xr-xchallenge-069/arne-sommer/raku/01-string22
-rwxr-xr-xchallenge-069/arne-sommer/raku/01-string-smart21
-rwxr-xr-xchallenge-069/arne-sommer/raku/ch-1.raku20
-rwxr-xr-xchallenge-069/arne-sommer/raku/ch-2.raku21
-rwxr-xr-xchallenge-069/arne-sommer/raku/strobonum27
-rwxr-xr-xchallenge-069/arne-sommer/raku/strobonum-grep20
-rw-r--r--challenge-069/ash/README4
-rw-r--r--challenge-069/ash/blog.txt1
-rw-r--r--challenge-069/ash/blog1.txt1
-rw-r--r--challenge-069/ash/cpp/ch-2.cpp24
-rw-r--r--challenge-069/ash/raku/ch-1.raku19
-rw-r--r--challenge-069/ash/raku/ch-2-bits.raku19
-rw-r--r--challenge-069/ash/raku/ch-2-seq-func.raku16
-rw-r--r--challenge-069/ash/raku/ch-2-seq.raku12
-rw-r--r--challenge-069/ash/raku/ch-2.raku18
-rw-r--r--challenge-069/athanasius/perl/ch-1.pl188
-rw-r--r--challenge-069/athanasius/perl/ch-2.pl139
-rw-r--r--challenge-069/athanasius/raku/ch-1.raku169
-rw-r--r--challenge-069/athanasius/raku/ch-2.raku121
-rw-r--r--challenge-069/brtastic/perl/ch-1.pl43
-rw-r--r--challenge-069/cheok-yin-fung/perl/ch-1.pl71
-rw-r--r--challenge-069/cheok-yin-fung/perl/ch-2.pl107
-rw-r--r--challenge-069/colin-crain/blog.txt1
-rw-r--r--challenge-069/colin-crain/perl/ch-1.pl92
-rw-r--r--challenge-069/colin-crain/perl/ch-2.pl54
-rw-r--r--challenge-069/colin-crain/raku/ch-1.p660
-rw-r--r--challenge-069/colin-crain/raku/ch-2.p647
-rwxr-xr-xchallenge-069/dave-jacoby/perl/ch-1.pl44
-rwxr-xr-xchallenge-069/dave-jacoby/perl/ch-2.pl58
-rw-r--r--challenge-069/dave-jacoby/perl/s20.txt14980
-rw-r--r--challenge-069/duncan-c-white/README56
-rwxr-xr-xchallenge-069/duncan-c-white/perl/ch-1.pl62
-rwxr-xr-xchallenge-069/duncan-c-white/perl/ch-2.pl55
-rwxr-xr-xchallenge-069/e-choroba/perl/ch-1.pl59
-rwxr-xr-xchallenge-069/e-choroba/perl/ch-2.pl20
-rw-r--r--challenge-069/javier-luque/blog.txt1
-rw-r--r--challenge-069/javier-luque/perl/ch-1.pl40
-rw-r--r--challenge-069/javier-luque/perl/ch-2.pl22
-rw-r--r--challenge-069/javier-luque/raku/ch-1.p631
-rw-r--r--challenge-069/javier-luque/raku/ch-2.p620
-rwxr-xr-xchallenge-069/jo-37/perl/ch-1.pl48
-rwxr-xr-xchallenge-069/jo-37/perl/ch-2.pl185
-rw-r--r--challenge-069/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-069/laurent-rosenfeld/perl/ch-1.pl10
-rw-r--r--challenge-069/laurent-rosenfeld/perl/ch-2.pl9
-rw-r--r--challenge-069/laurent-rosenfeld/raku/ch-1.p68
-rw-r--r--challenge-069/laurent-rosenfeld/raku/ch-2.p611
-rw-r--r--challenge-069/luca-ferrari/blog-1.txt1
-rw-r--r--challenge-069/luca-ferrari/blog-2.txt1
-rw-r--r--challenge-069/luca-ferrari/raku/ch-1.p650
-rw-r--r--challenge-069/luca-ferrari/raku/ch-2.p631
-rw-r--r--challenge-069/mark-anderson/raku/ch-1.raku8
-rw-r--r--challenge-069/mark-anderson/raku/ch-2.raku7
-rw-r--r--challenge-069/mohammad-anwar/blog.txt1
-rw-r--r--challenge-069/mohammad-anwar/blog1.txt1
-rw-r--r--challenge-069/mohammad-anwar/blog2.txt1
-rw-r--r--challenge-069/mohammad-anwar/perl/ch-1.pl58
-rw-r--r--challenge-069/mohammad-anwar/perl/ch-1a.pl62
-rw-r--r--challenge-069/mohammad-anwar/perl/ch-2.pl40
-rw-r--r--challenge-069/mohammad-anwar/perl/ch-2a.pl45
-rw-r--r--challenge-069/mohammad-anwar/raku/ch-1.raku47
-rw-r--r--challenge-069/mohammad-anwar/raku/ch-1a.raku48
-rw-r--r--challenge-069/mohammad-anwar/raku/ch-2.raku32
-rw-r--r--challenge-069/mohammad-anwar/raku/ch-2a.raku34
-rwxr-xr-xchallenge-069/perlboy1967/perl/ch-1.pl64
-rwxr-xr-xchallenge-069/perlboy1967/perl/ch-2.pl41
-rw-r--r--challenge-069/pete-houston/perl/ch-2.pl30
-rw-r--r--challenge-069/rage311/perl/ch-1.pl62
-rw-r--r--challenge-069/rage311/perl/ch-2.pl47
-rw-r--r--challenge-069/richard-park/apl/StrobogrammaticNumber.aplf7
-rw-r--r--challenge-069/richard-park/apl/ZeroOneString.aplf10
-rw-r--r--challenge-069/richard-park/apl/ch-1.aplf7
-rw-r--r--challenge-069/richard-park/apl/ch-2.aplf10
-rw-r--r--challenge-069/richard-park/blog.txt1
-rw-r--r--challenge-069/roger-bell-west/blog.txt1
-rwxr-xr-xchallenge-069/roger-bell-west/perl/ch-1.pl44
-rwxr-xr-xchallenge-069/roger-bell-west/perl/ch-2.pl47
-rwxr-xr-xchallenge-069/roger-bell-west/perl/ch-2a.pl40
-rwxr-xr-xchallenge-069/roger-bell-west/perl/ch-2b.pl47
-rwxr-xr-xchallenge-069/roger-bell-west/raku/ch-1.p645
-rwxr-xr-xchallenge-069/roger-bell-west/raku/ch-2.p641
-rwxr-xr-xchallenge-069/roger-bell-west/raku/ch-2b.p641
-rw-r--r--challenge-069/roger-bell-west/readme.txt5
-rw-r--r--challenge-069/sgreen/README.md53
-rw-r--r--challenge-069/sgreen/blog.txt1
-rwxr-xr-xchallenge-069/sgreen/perl/ch-1.pl88
-rwxr-xr-xchallenge-069/sgreen/perl/ch-2.pl24
-rw-r--r--challenge-069/shahed-nooshmand/blog.txt1
-rw-r--r--challenge-069/shahed-nooshmand/raku/ch-1.raku1
-rw-r--r--challenge-069/shahed-nooshmand/raku/ch-2.raku1
-rwxr-xr-xchallenge-069/simon-miner/perl/ch-1.pl31
-rw-r--r--challenge-069/ulrich-rieke/cpp/ch-2.cpp32
-rw-r--r--challenge-069/ulrich-rieke/perl/ch-1.pl25
-rw-r--r--challenge-069/ulrich-rieke/perl/ch-2.pl24
-rw-r--r--challenge-069/ulrich-rieke/raku/ch-1.raku23
-rw-r--r--challenge-069/ulrich-rieke/raku/ch-2.raku14
-rw-r--r--challenge-069/walt-mankowski/c/.gitignore2
-rw-r--r--challenge-069/walt-mankowski/c/Makefile23
-rw-r--r--challenge-069/walt-mankowski/c/ch-1.c52
-rw-r--r--challenge-069/walt-mankowski/c/ch-2.c38
-rw-r--r--challenge-069/walt-mankowski/perl/ch-1.pl31
-rw-r--r--challenge-069/walt-mankowski/perl/ch-2.pl49
-rw-r--r--challenge-069/walt-mankowski/python/ch-1.py12
-rw-r--r--challenge-069/walt-mankowski/python/ch-2.py17
-rw-r--r--challenge-069/wanderdoc/perl/ch-1.pl61
-rw-r--r--challenge-069/wanderdoc/perl/ch-2.pl38
111 files changed, 18836 insertions, 56 deletions
diff --git a/challenge-069/arne-sommer/blog.txt b/challenge-069/arne-sommer/blog.txt
new file mode 100644
index 0000000000..1ac799d84a
--- /dev/null
+++ b/challenge-069/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/binary-strobe.html
diff --git a/challenge-069/arne-sommer/perl/01-string-perl b/challenge-069/arne-sommer/perl/01-string-perl
new file mode 100755
index 0000000000..4c3134abc1
--- /dev/null
+++ b/challenge-069/arne-sommer/perl/01-string-perl
@@ -0,0 +1,23 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'signatures';
+
+no warnings "experimental::signatures";
+
+my $limit = $ARGV[0] // 30;
+
+sub switch ($string)
+{
+ return join("", map { $_ eq "1" ? 0 : 1 } split("", $string));
+}
+
+my $prev = "";
+
+for my $counter (0 .. $limit)
+{
+ say "S" . $counter++ . " = \"$prev\"";
+ $prev = $prev . "0" . switch(reverse($prev));
+}
diff --git a/challenge-069/arne-sommer/perl/ch-1.pl b/challenge-069/arne-sommer/perl/ch-1.pl
new file mode 100755
index 0000000000..4666b711a9
--- /dev/null
+++ b/challenge-069/arne-sommer/perl/ch-1.pl
@@ -0,0 +1,45 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'signatures';
+use List::Util qw(all any);
+
+no warnings "experimental::signatures";
+
+my $verbose;
+my $calculator;
+
+while (@ARGV && substr($ARGV[0],0,2) eq "--")
+{
+ my $arg = shift(@ARGV);
+ if ($arg eq "--calculator") { $calculator++ }
+ elsif ($arg eq "--verbose" ) { $verbose++ }
+}
+
+my $A = shift(@ARGV) // die 'Please specify $A and $B';
+my $B = shift(@ARGV) // die 'Please specify $A and $B';
+
+die "$A: Not a positive integer" unless $A =~ /^\d+$/;
+die "$B: Not a positive integer" unless $B =~ /^\d+$/;
+
+die "$A: Out of range" unless $A >= 1 && $A <= 10 ** 15;
+die "$B: Out of range" unless $B >= $A && $B <= 10 ** 15;
+
+my %strobo = $calculator
+ ? ( 0 => 0, 1 => 1, 2 => 5, 5 => 2, 6 => 9, 8 => 8, 9 => 6 )
+ : ( 0 => 0, 1 => 1, 6 => 9, 8 => 8, 9 => 6 );
+
+sub is_strobogrammatic ($number)
+{
+ # return 0 unless all { split("", $number) eq any {} keys %strobo };
+
+ my $strobo = join("", map { $strobo{$_} // return 0 } split("", reverse($number)) );
+
+ say ": $number -> $strobo" if $verbose;
+
+ return $strobo eq $number;
+}
+
+say join(", ", grep { is_strobogrammatic($_) } ($A .. $B));
diff --git a/challenge-069/arne-sommer/perl/ch-2.pl b/challenge-069/arne-sommer/perl/ch-2.pl
new file mode 100755
index 0000000000..4c3134abc1
--- /dev/null
+++ b/challenge-069/arne-sommer/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'signatures';
+
+no warnings "experimental::signatures";
+
+my $limit = $ARGV[0] // 30;
+
+sub switch ($string)
+{
+ return join("", map { $_ eq "1" ? 0 : 1 } split("", $string));
+}
+
+my $prev = "";
+
+for my $counter (0 .. $limit)
+{
+ say "S" . $counter++ . " = \"$prev\"";
+ $prev = $prev . "0" . switch(reverse($prev));
+}
diff --git a/challenge-069/arne-sommer/perl/strobonum-perl b/challenge-069/arne-sommer/perl/strobonum-perl
new file mode 100755
index 0000000000..4666b711a9
--- /dev/null
+++ b/challenge-069/arne-sommer/perl/strobonum-perl
@@ -0,0 +1,45 @@
+#! /usr/bin/env perl
+
+use strict;