aboutsummaryrefslogtreecommitdiff
path: root/challenge-167
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2022-06-06 01:07:53 +0200
committerarnesom <arne@bbop.org>2022-06-06 01:07:53 +0200
commitfc3110bcee6d1c983f4f7458b9cc82710f000ee8 (patch)
tree4b05651dc02e957640f00b10d46f71a1f43c7a81 /challenge-167
parente7e27c6c22e19aabd3d0d33d3145271927da9eca (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-167/arne-sommer/raku/ch-1.raku28
-rwxr-xr-xchallenge-167/arne-sommer/raku/ch-2.raku7
-rwxr-xr-xchallenge-167/arne-sommer/raku/circular-prime28
-rwxr-xr-xchallenge-167/arne-sommer/raku/circular-prime-stupid3
-rwxr-xr-xchallenge-167/arne-sommer/raku/gamma-function7
-rwxr-xr-xchallenge-167/arne-sommer/raku/gamma-function-int7
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;