diff options
| author | arnesom <arne@bbop.org> | 2021-04-11 23:20:08 +0200 |
|---|---|---|
| committer | arnesom <arne@bbop.org> | 2021-04-11 23:20:08 +0200 |
| commit | aaf1df65948edbc74613d13f14bdbd6514d0e5a1 (patch) | |
| tree | a01cc4a2eba383c70fe2a49e7aaa717385cbe4fb /challenge-107 | |
| parent | bf8ca3949279e3625b375fb5d58b1e6cd2172770 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-107/arne-sommer/raku/ch-1.raku | 18 | ||||
| -rwxr-xr-x | challenge-107/arne-sommer/raku/ch-2.raku | 14 | ||||
| -rwxr-xr-x | challenge-107/arne-sommer/raku/deceptive-numbers | 20 | ||||
| -rwxr-xr-x | challenge-107/arne-sommer/raku/list-methods | 13 | ||||
| -rwxr-xr-x | challenge-107/arne-sommer/raku/list-methods-new | 14 | ||||
| -rwxr-xr-x | challenge-107/arne-sommer/raku/selfdesc | 18 |
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; +} |
