diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-07-10 16:14:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-10 16:14:45 +0100 |
| commit | e24a95a4bd0ab10e7660bcc191850e92a606b188 (patch) | |
| tree | dbcfc2eeb077a356e3cbc4a1f397dafc162cbc08 | |
| parent | b3458cb9bb2fbd3dd6aa1652eab5e52c1385275e (diff) | |
| parent | a031f2668d2f73c5079d6d74e33d8cc9e16cae54 (diff) | |
| download | perlweeklychallenge-club-e24a95a4bd0ab10e7660bcc191850e92a606b188.tar.gz perlweeklychallenge-club-e24a95a4bd0ab10e7660bcc191850e92a606b188.tar.bz2 perlweeklychallenge-club-e24a95a4bd0ab10e7660bcc191850e92a606b188.zip | |
Merge pull request #6414 from arnesom/branch-for-challenge-172
Arne Sommer
| -rw-r--r-- | challenge-172/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-172/arne-sommer/raku/ch-1.raku | 16 | ||||
| -rwxr-xr-x | challenge-172/arne-sommer/raku/ch-2.raku | 41 | ||||
| -rwxr-xr-x | challenge-172/arne-sommer/raku/five-number-summary | 41 | ||||
| -rwxr-xr-x | challenge-172/arne-sommer/raku/prime-partition | 16 |
5 files changed, 115 insertions, 0 deletions
diff --git a/challenge-172/arne-sommer/blog.txt b/challenge-172/arne-sommer/blog.txt new file mode 100644 index 0000000000..51ef2f95ad --- /dev/null +++ b/challenge-172/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/primary-five.html diff --git a/challenge-172/arne-sommer/raku/ch-1.raku b/challenge-172/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..441f97e603 --- /dev/null +++ b/challenge-172/arne-sommer/raku/ch-1.raku @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $m where $m > 0, Int $n where $n > 0, :a($all)); + +my $primes := (2 .. $m).grep( *.is-prime ); + +for $primes.combinations($n) -> @combination +{ + my $sum = @combination.sum; + + if $sum == $m + { + say @combination.join(", "); + last unless $all; + } +} diff --git a/challenge-172/arne-sommer/raku/ch-2.raku b/challenge-172/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..e8fbf487db --- /dev/null +++ b/challenge-172/arne-sommer/raku/ch-2.raku @@ -0,0 +1,41 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@integers where all(@integers) ~~ Int, :v($verbose)); + +my @sorted = @integers>>.Int.sort; + +say ": Sorted: @sorted[]" if $verbose; + +my @fns = +( + @sorted[0], + lower_quartile(@sorted), + median(@sorted), + upper_quartile(@sorted), + @sorted[*-1] +); + +sub median (@values) +{ + my $count = @values.elems; + + return @values[$count/2] if $count % 2; + + return (@values[$count/2 -0.5] + @values[$count/2 +0.5]) / 2; +} + +sub lower_quartile (@values) +{ + my $count = @values.elems; + + return median(@values[0 .. $count/2 -0.5]); +} + +sub upper_quartile (@values) +{ + my $count = @values.elems; + + return median(@values[$count/2 .. *]); +} + +say @fns.join(", "); diff --git a/challenge-172/arne-sommer/raku/five-number-summary b/challenge-172/arne-sommer/raku/five-number-summary new file mode 100755 index 0000000000..e8fbf487db --- /dev/null +++ b/challenge-172/arne-sommer/raku/five-number-summary @@ -0,0 +1,41 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@integers where all(@integers) ~~ Int, :v($verbose)); + +my @sorted = @integers>>.Int.sort; + +say ": Sorted: @sorted[]" if $verbose; + +my @fns = +( + @sorted[0], + lower_quartile(@sorted), + median(@sorted), + upper_quartile(@sorted), + @sorted[*-1] +); + +sub median (@values) +{ + my $count = @values.elems; + + return @values[$count/2] if $count % 2; + + return (@values[$count/2 -0.5] + @values[$count/2 +0.5]) / 2; +} + +sub lower_quartile (@values) +{ + my $count = @values.elems; + + return median(@values[0 .. $count/2 -0.5]); +} + +sub upper_quartile (@values) +{ + my $count = @values.elems; + + return median(@values[$count/2 .. *]); +} + +say @fns.join(", "); diff --git a/challenge-172/arne-sommer/raku/prime-partition b/challenge-172/arne-sommer/raku/prime-partition new file mode 100755 index 0000000000..441f97e603 --- /dev/null +++ b/challenge-172/arne-sommer/raku/prime-partition @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $m where $m > 0, Int $n where $n > 0, :a($all)); + +my $primes := (2 .. $m).grep( *.is-prime ); + +for $primes.combinations($n) -> @combination +{ + my $sum = @combination.sum; + + if $sum == $m + { + say @combination.join(", "); + last unless $all; + } +} |
