From fc3110bcee6d1c983f4f7458b9cc82710f000ee8 Mon Sep 17 00:00:00 2001 From: arnesom Date: Mon, 6 Jun 2022 01:07:53 +0200 Subject: Arne Sommer --- challenge-167/arne-sommer/blog.txt | 1 + challenge-167/arne-sommer/raku/ch-1.raku | 28 ++++++++++++++++++++++ challenge-167/arne-sommer/raku/ch-2.raku | 7 ++++++ challenge-167/arne-sommer/raku/circular-prime | 28 ++++++++++++++++++++++ .../arne-sommer/raku/circular-prime-stupid | 3 +++ challenge-167/arne-sommer/raku/gamma-function | 7 ++++++ challenge-167/arne-sommer/raku/gamma-function-int | 7 ++++++ 7 files changed, 81 insertions(+) create mode 100644 challenge-167/arne-sommer/blog.txt create mode 100755 challenge-167/arne-sommer/raku/ch-1.raku create mode 100755 challenge-167/arne-sommer/raku/ch-2.raku create mode 100755 challenge-167/arne-sommer/raku/circular-prime create mode 100755 challenge-167/arne-sommer/raku/circular-prime-stupid create mode 100755 challenge-167/arne-sommer/raku/gamma-function create mode 100755 challenge-167/arne-sommer/raku/gamma-function-int 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; -- cgit