From aaf1df65948edbc74613d13f14bdbd6514d0e5a1 Mon Sep 17 00:00:00 2001 From: arnesom Date: Sun, 11 Apr 2021 23:20:08 +0200 Subject: Arne Sommer --- challenge-107/arne-sommer/blog.txt | 1 + challenge-107/arne-sommer/raku/ch-1.raku | 18 ++++++++++++++++++ challenge-107/arne-sommer/raku/ch-2.raku | 14 ++++++++++++++ challenge-107/arne-sommer/raku/deceptive-numbers | 20 ++++++++++++++++++++ challenge-107/arne-sommer/raku/list-methods | 13 +++++++++++++ challenge-107/arne-sommer/raku/list-methods-new | 14 ++++++++++++++ challenge-107/arne-sommer/raku/selfdesc | 18 ++++++++++++++++++ 7 files changed, 98 insertions(+) create mode 100644 challenge-107/arne-sommer/blog.txt create mode 100755 challenge-107/arne-sommer/raku/ch-1.raku create mode 100755 challenge-107/arne-sommer/raku/ch-2.raku create mode 100755 challenge-107/arne-sommer/raku/deceptive-numbers create mode 100755 challenge-107/arne-sommer/raku/list-methods create mode 100755 challenge-107/arne-sommer/raku/list-methods-new create mode 100755 challenge-107/arne-sommer/raku/selfdesc diff --git a/challenge-107/arne-sommer/blog.txt b/challenge-107/arne-sommer/blog.txt new file mode 100644 index 0000000000..eac50cd634 --- /dev/null +++ b/challenge-107/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/self-deceptive-methods.html diff --git a/challenge-107/arne-sommer/raku/ch-1.raku b/challenge-107/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..ef77b02392 --- /dev/null +++ b/challenge-107/arne-sommer/raku/ch-1.raku @@ -0,0 +1,18 @@ +#! /usr/bin/env raku + +unit sub MAIN (UInt :$base = 10); + +if $base == any(0,1,2,3,6) || $base > 39 +{ + say "Error"; +} +elsif $base == 5 +{ + say "21200"; # Prevent "11100" +} +else +{ + my $number = "{ ($base -4).base(36) }21" ~ "0" x ($base - 3); + $number.substr-rw(*-4,1) = 1; + say $number; +} diff --git a/challenge-107/arne-sommer/raku/ch-2.raku b/challenge-107/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..5bfd7c2e8b --- /dev/null +++ b/challenge-107/arne-sommer/raku/ch-2.raku @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +class Calc +{ + has $!value; + has $!next; + + method new { … } + method add { … } + method mul { … } + method div { … } +} + +.say for Calc.^methods; diff --git a/challenge-107/arne-sommer/raku/deceptive-numbers b/challenge-107/arne-sommer/raku/deceptive-numbers new file mode 100755 index 0000000000..4205168739 --- /dev/null +++ b/challenge-107/arne-sommer/raku/deceptive-numbers @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN ($count); + +my $seq := gather +{ + my $index = 3; + + loop + { + unless $index.is-prime + { + take $index if (10 ** ($index -1)) % (9 * $index) == 1; + } + + $index++; + } +} + +say $seq[^$count]; diff --git a/challenge-107/arne-sommer/raku/list-methods b/challenge-107/arne-sommer/raku/list-methods new file mode 100755 index 0000000000..963cd2f6a2 --- /dev/null +++ b/challenge-107/arne-sommer/raku/list-methods @@ -0,0 +1,13 @@ +#! /usr/bin/env raku + +class Calc +{ + has $.value; + has $.next is rw; + + method add { … } + method mul { … } + method div { … } +} + +.say for Calc.^methods; diff --git a/challenge-107/arne-sommer/raku/list-methods-new b/challenge-107/arne-sommer/raku/list-methods-new new file mode 100755 index 0000000000..5bfd7c2e8b --- /dev/null +++ b/challenge-107/arne-sommer/raku/list-methods-new @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +class Calc +{ + has $!value; + has $!next; + + method new { … } + method add { … } + method mul { … } + method div { … } +} + +.say for Calc.^methods; diff --git a/challenge-107/arne-sommer/raku/selfdesc b/challenge-107/arne-sommer/raku/selfdesc new file mode 100755 index 0000000000..ef77b02392 --- /dev/null +++ b/challenge-107/arne-sommer/raku/selfdesc @@ -0,0 +1,18 @@ +#! /usr/bin/env raku + +unit sub MAIN (UInt :$base = 10); + +if $base == any(0,1,2,3,6) || $base > 39 +{ + say "Error"; +} +elsif $base == 5 +{ + say "21200"; # Prevent "11100" +} +else +{ + my $number = "{ ($base -4).base(36) }21" ~ "0" x ($base - 3); + $number.substr-rw(*-4,1) = 1; + say $number; +} -- cgit