aboutsummaryrefslogtreecommitdiff
path: root/challenge-082
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-10-18 23:17:20 +0100
committerGitHub <noreply@github.com>2020-10-18 23:17:20 +0100
commitc08caf38804cb43cbbd9655e7f931f10f348afb5 (patch)
tree09c258bda4430b5cc5169e66717d38bf6051f290 /challenge-082
parenteb62e94b02b15db722116dd968a8e7a90843525c (diff)
parent8a2f7e83679541b3b7ef250beabac3beb1d3a263 (diff)
downloadperlweeklychallenge-club-c08caf38804cb43cbbd9655e7f931f10f348afb5.tar.gz
perlweeklychallenge-club-c08caf38804cb43cbbd9655e7f931f10f348afb5.tar.bz2
perlweeklychallenge-club-c08caf38804cb43cbbd9655e7f931f10f348afb5.zip
Merge pull request #2556 from arnesom/branch-for-challenge-082
Arne Sommer
Diffstat (limited to 'challenge-082')
-rw-r--r--challenge-082/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-082/arne-sommer/raku/ch-1.p616
-rwxr-xr-xchallenge-082/arne-sommer/raku/ch-2.p629
-rwxr-xr-xchallenge-082/arne-sommer/raku/common-factors16
-rwxr-xr-xchallenge-082/arne-sommer/raku/interleave-string29
5 files changed, 91 insertions, 0 deletions
diff --git a/challenge-082/arne-sommer/blog.txt b/challenge-082/arne-sommer/blog.txt
new file mode 100644
index 0000000000..d001e4c296
--- /dev/null
+++ b/challenge-082/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/interleaved-factors.html
diff --git a/challenge-082/arne-sommer/raku/ch-1.p6 b/challenge-082/arne-sommer/raku/ch-1.p6
new file mode 100755
index 0000000000..99d637795d
--- /dev/null
+++ b/challenge-082/arne-sommer/raku/ch-1.p6
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $M where $M > 0, Int $N where $N > 0, :i(:$include-self), :v(:$verbose));
+
+my @M-factors = $include-self ?? (1..$M).grep({ $M %% $_ }) !! (1..$M/2).grep({ $M %% $_ });
+my @N-factors = $include-self ?? (1..$N).grep({ $N %% $_ }) !! (1..$N/2).grep({ $N %% $_ });
+
+if $verbose
+{
+ say "Factors of $M: { @M-factors.join(", ") }";
+ say "Factors of $N: { @N-factors.join(", ") }";
+}
+
+my %common = @M-factors (&) @N-factors;
+
+say "(" ~ %common.keys.sort.join(", ") ~ ")"; \ No newline at end of file
diff --git a/challenge-082/arne-sommer/raku/ch-2.p6 b/challenge-082/arne-sommer/raku/ch-2.p6
new file mode 100755
index 0000000000..8bf24a3abd
--- /dev/null
+++ b/challenge-082/arne-sommer/raku/ch-2.p6
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $A where $A.chars > 0,
+ Str $B where $B.chars > 0,
+ Str $C where $C.chars > 0,
+ :v(:$verbose));
+
+say do_check($A, $B, $C) ?? '1' !! '0';
+
+sub do_check ($A, $B, $C)
+{
+ say ": Checking A:$A | B:$B | C:$C" if $verbose;
+
+ return 1 if $C eq "";
+
+ if $C.contains($A)
+ {
+ my $c = $C.subst($A);
+ return do_check($A, $B, $c);
+ }
+
+ if $C.contains($B)
+ {
+ my $c = $C.subst($B);
+ return do_check($A, $B, $c);
+ }
+}
+
+
diff --git a/challenge-082/arne-sommer/raku/common-factors b/challenge-082/arne-sommer/raku/common-factors
new file mode 100755
index 0000000000..99d637795d
--- /dev/null
+++ b/challenge-082/arne-sommer/raku/common-factors
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $M where $M > 0, Int $N where $N > 0, :i(:$include-self), :v(:$verbose));
+
+my @M-factors = $include-self ?? (1..$M).grep({ $M %% $_ }) !! (1..$M/2).grep({ $M %% $_ });
+my @N-factors = $include-self ?? (1..$N).grep({ $N %% $_ }) !! (1..$N/2).grep({ $N %% $_ });
+
+if $verbose
+{
+ say "Factors of $M: { @M-factors.join(", ") }";
+ say "Factors of $N: { @N-factors.join(", ") }";
+}
+
+my %common = @M-factors (&) @N-factors;
+
+say "(" ~ %common.keys.sort.join(", ") ~ ")"; \ No newline at end of file
diff --git a/challenge-082/arne-sommer/raku/interleave-string b/challenge-082/arne-sommer/raku/interleave-string
new file mode 100755
index 0000000000..8bf24a3abd
--- /dev/null
+++ b/challenge-082/arne-sommer/raku/interleave-string
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $A where $A.chars > 0,
+ Str $B where $B.chars > 0,
+ Str $C where $C.chars > 0,
+ :v(:$verbose));
+
+say do_check($A, $B, $C) ?? '1' !! '0';
+
+sub do_check ($A, $B, $C)
+{
+ say ": Checking A:$A | B:$B | C:$C" if $verbose;
+
+ return 1 if $C eq "";
+
+ if $C.contains($A)
+ {
+ my $c = $C.subst($A);
+ return do_check($A, $B, $c);
+ }
+
+ if $C.contains($B)
+ {
+ my $c = $C.subst($B);
+ return do_check($A, $B, $c);
+ }
+}
+
+