aboutsummaryrefslogtreecommitdiff
path: root/challenge-107
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2021-04-11 23:20:08 +0200
committerarnesom <arne@bbop.org>2021-04-11 23:20:08 +0200
commitaaf1df65948edbc74613d13f14bdbd6514d0e5a1 (patch)
treea01cc4a2eba383c70fe2a49e7aaa717385cbe4fb /challenge-107
parentbf8ca3949279e3625b375fb5d58b1e6cd2172770 (diff)
downloadperlweeklychallenge-club-aaf1df65948edbc74613d13f14bdbd6514d0e5a1.tar.gz
perlweeklychallenge-club-aaf1df65948edbc74613d13f14bdbd6514d0e5a1.tar.bz2
perlweeklychallenge-club-aaf1df65948edbc74613d13f14bdbd6514d0e5a1.zip
Arne Sommer
Diffstat (limited to 'challenge-107')
-rw-r--r--challenge-107/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-107/arne-sommer/raku/ch-1.raku18
-rwxr-xr-xchallenge-107/arne-sommer/raku/ch-2.raku14
-rwxr-xr-xchallenge-107/arne-sommer/raku/deceptive-numbers20
-rwxr-xr-xchallenge-107/arne-sommer/raku/list-methods13
-rwxr-xr-xchallenge-107/arne-sommer/raku/list-methods-new14
-rwxr-xr-xchallenge-107/arne-sommer/raku/selfdesc18
7 files changed, 98 insertions, 0 deletions
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;
+}