diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-10-18 23:17:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-18 23:17:20 +0100 |
| commit | c08caf38804cb43cbbd9655e7f931f10f348afb5 (patch) | |
| tree | 09c258bda4430b5cc5169e66717d38bf6051f290 /challenge-082 | |
| parent | eb62e94b02b15db722116dd968a8e7a90843525c (diff) | |
| parent | 8a2f7e83679541b3b7ef250beabac3beb1d3a263 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-082/arne-sommer/raku/ch-1.p6 | 16 | ||||
| -rwxr-xr-x | challenge-082/arne-sommer/raku/ch-2.p6 | 29 | ||||
| -rwxr-xr-x | challenge-082/arne-sommer/raku/common-factors | 16 | ||||
| -rwxr-xr-x | challenge-082/arne-sommer/raku/interleave-string | 29 |
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); + } +} + + |
