diff options
| author | arnesom <arne@bbop.org> | 2022-06-06 01:07:53 +0200 |
|---|---|---|
| committer | arnesom <arne@bbop.org> | 2022-06-06 01:07:53 +0200 |
| commit | fc3110bcee6d1c983f4f7458b9cc82710f000ee8 (patch) | |
| tree | 4b05651dc02e957640f00b10d46f71a1f43c7a81 /challenge-167 | |
| parent | e7e27c6c22e19aabd3d0d33d3145271927da9eca (diff) | |
| download | perlweeklychallenge-club-fc3110bcee6d1c983f4f7458b9cc82710f000ee8.tar.gz perlweeklychallenge-club-fc3110bcee6d1c983f4f7458b9cc82710f000ee8.tar.bz2 perlweeklychallenge-club-fc3110bcee6d1c983f4f7458b9cc82710f000ee8.zip | |
Arne Sommer
Diffstat (limited to 'challenge-167')
| -rw-r--r-- | challenge-167/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-167/arne-sommer/raku/ch-1.raku | 28 | ||||
| -rwxr-xr-x | challenge-167/arne-sommer/raku/ch-2.raku | 7 | ||||
| -rwxr-xr-x | challenge-167/arne-sommer/raku/circular-prime | 28 | ||||
| -rwxr-xr-x | challenge-167/arne-sommer/raku/circular-prime-stupid | 3 | ||||
| -rwxr-xr-x | challenge-167/arne-sommer/raku/gamma-function | 7 | ||||
| -rwxr-xr-x | challenge-167/arne-sommer/raku/gamma-function-int | 7 |
7 files changed, 81 insertions, 0 deletions
diff --git a/challenge-167/arne-sommer/blog.txt b/challenge-167/arne-sommer/blog.txt new file mode 100644 index 0000000000..eadd654c4e --- /dev/null +++ b/challenge-167/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/primarily-functional.html diff --git a/challenge-167/arne-sommer/raku/ch-1.raku b/challenge-167/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..22fd9ba03b --- /dev/null +++ b/challenge-167/arne-sommer/raku/ch-1.raku @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $c where $c > 1 = 10); + +my $cp := (100 .. *).grep({ is-circular($_) }); + +sub is-circular ($number) +{ + state %seen; + + return if %seen{$number}; %seen{$number} = True; + + return unless $number ~~ /^<[1379]>+$/; + return unless $number.is-prime; + + my @digits = $number.comb; + + for (1 .. @digits.elems -1) -> $skew + { + my $rotated = @digits.rotate($skew).join; + return if %seen{$rotated}; + return unless $rotated.is-prime; + } + + return True; +} + +say $cp[^$c].join(", ");
\ No newline at end of file diff --git a/challenge-167/arne-sommer/raku/ch-2.raku b/challenge-167/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..a632486a8e --- /dev/null +++ b/challenge-167/arne-sommer/raku/ch-2.raku @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +use Math::Libgsl::Function :ALL; + +unit sub MAIN (Int :u(:$upto) where $upto > 0 = 10); + +say "$_ -> { gamma($_).Int }" for 1 .. $upto; diff --git a/challenge-167/arne-sommer/raku/circular-prime b/challenge-167/arne-sommer/raku/circular-prime new file mode 100755 index 0000000000..22fd9ba03b --- /dev/null +++ b/challenge-167/arne-sommer/raku/circular-prime @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $c where $c > 1 = 10); + +my $cp := (100 .. *).grep({ is-circular($_) }); + +sub is-circular ($number) +{ + state %seen; + + return if %seen{$number}; %seen{$number} = True; + + return unless $number ~~ /^<[1379]>+$/; + return unless $number.is-prime; + + my @digits = $number.comb; + + for (1 .. @digits.elems -1) -> $skew + { + my $rotated = @digits.rotate($skew).join; + return if %seen{$rotated}; + return unless $rotated.is-prime; + } + + return True; +} + +say $cp[^$c].join(", ");
\ No newline at end of file diff --git a/challenge-167/arne-sommer/raku/circular-prime-stupid b/challenge-167/arne-sommer/raku/circular-prime-stupid new file mode 100755 index 0000000000..469bf9d164 --- /dev/null +++ b/challenge-167/arne-sommer/raku/circular-prime-stupid @@ -0,0 +1,3 @@ +#! /usr/bin/env raku + +say "113, 197, 199, 337, 1193, 3779, 11939, 19937, 193939, 199933"; diff --git a/challenge-167/arne-sommer/raku/gamma-function b/challenge-167/arne-sommer/raku/gamma-function new file mode 100755 index 0000000000..8751524d9d --- /dev/null +++ b/challenge-167/arne-sommer/raku/gamma-function @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +use Math::Libgsl::Function :ALL; + +unit sub MAIN (Int :u(:$upto) where $upto > 0 = 10); + +say "$_ -> { gamma($_) }" for 1 .. $upto; diff --git a/challenge-167/arne-sommer/raku/gamma-function-int b/challenge-167/arne-sommer/raku/gamma-function-int new file mode 100755 index 0000000000..a632486a8e --- /dev/null +++ b/challenge-167/arne-sommer/raku/gamma-function-int @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +use Math::Libgsl::Function :ALL; + +unit sub MAIN (Int :u(:$upto) where $upto > 0 = 10); + +say "$_ -> { gamma($_).Int }" for 1 .. $upto; |
