aboutsummaryrefslogtreecommitdiff
path: root/challenge-042
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-042')
-rw-r--r--challenge-042/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-042/arne-sommer/raku/brackets37
-rwxr-xr-xchallenge-042/arne-sommer/raku/brackets-mono30
-rwxr-xr-xchallenge-042/arne-sommer/raku/ch-1.p63
-rwxr-xr-xchallenge-042/arne-sommer/raku/ch-2.p637
-rwxr-xr-xchallenge-042/arne-sommer/raku/octal-base3
-rwxr-xr-xchallenge-042/arne-sommer/raku/octal-fmt3
7 files changed, 114 insertions, 0 deletions
diff --git a/challenge-042/arne-sommer/blog.txt b/challenge-042/arne-sommer/blog.txt
new file mode 100644
index 0000000000..98a68df7f8
--- /dev/null
+++ b/challenge-042/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/octal-brace.html
diff --git a/challenge-042/arne-sommer/raku/brackets b/challenge-042/arne-sommer/raku/brackets
new file mode 100755
index 0000000000..fb40dbe06c
--- /dev/null
+++ b/challenge-042/arne-sommer/raku/brackets
@@ -0,0 +1,37 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (:$maxchars = 6, :$iterations = 10, :$color);
+
+sub brackets ($count = (1 .. $maxchars).pick)
+{
+ return (^$count).map({ <( )>.pick }).join;
+}
+
+sub is-balanced ($brackets)
+{
+ return False if $brackets.chars % 2; # An odd number
+ return False if $brackets.substr(0, 1) eq ')';
+ return False if $brackets.substr(*-1,1) eq '(';
+
+ my $count = 0;
+
+ for $brackets.comb -> $char
+ {
+ if $char eq '(' { $count++; }
+ elsif $char eq ')' { $count--; }
+ else { die "Illegal character $char"; }
+
+ return False if $count < 0; # Unbalanced inside
+ }
+
+ return $count == 0;
+}
+
+for ^$iterations
+{
+ my $brackets = brackets;
+
+ $color
+ ?? say "$brackets - { is-balanced($brackets) ?? "\x1b[42m" ~ "OK" !! "\x1b[41m" ~ "NOT OK" }" ~ "\x1b[0m"
+ !! say "$brackets - { is-balanced($brackets) ?? "OK" !! "NOT OK" }";
+}
diff --git a/challenge-042/arne-sommer/raku/brackets-mono b/challenge-042/arne-sommer/raku/brackets-mono
new file mode 100755
index 0000000000..41e7cc2c17
--- /dev/null
+++ b/challenge-042/arne-sommer/raku/brackets-mono
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (:$maxchars = 6, :$iterations = 10);
+
+sub brackets ($count = (1 .. $maxchars).pick)
+{
+ return (^$count).map({ <( )>.pick }).join;
+}
+
+sub is-balanced ($brackets)
+{
+ my $count = 0;
+
+ for $brackets.comb -> $char
+ {
+ if $char eq '(' { $count++; }
+ elsif $char eq ')' { $count--; }
+ else { die "Illegal character $char"; }
+
+ return False if $count < 0; # Unbalanced inside
+ }
+
+ return $count == 0;
+}
+
+for ^$iterations
+{
+ my $brackets = brackets;
+ say "$brackets - { is-balanced($brackets) ?? "OK" !! "NOT OK" }";
+}
diff --git a/challenge-042/arne-sommer/raku/ch-1.p6 b/challenge-042/arne-sommer/raku/ch-1.p6
new file mode 100755
index 0000000000..75b45f9b0f
--- /dev/null
+++ b/challenge-042/arne-sommer/raku/ch-1.p6
@@ -0,0 +1,3 @@
+#! /usr/bin/env raku
+
+say "Decimal $_ = Octal { $_.base(8) }" for ^51;
diff --git a/challenge-042/arne-sommer/raku/ch-2.p6 b/challenge-042/arne-sommer/raku/ch-2.p6
new file mode 100755
index 0000000000..fb40dbe06c
--- /dev/null
+++ b/challenge-042/arne-sommer/raku/ch-2.p6
@@ -0,0 +1,37 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (:$maxchars = 6, :$iterations = 10, :$color);
+
+sub brackets ($count = (1 .. $maxchars).pick)
+{
+ return (^$count).map({ <( )>.pick }).join;
+}
+
+sub is-balanced ($brackets)
+{
+ return False if $brackets.chars % 2; # An odd number
+ return False if $brackets.substr(0, 1) eq ')';
+ return False if $brackets.substr(*-1,1) eq '(';
+
+ my $count = 0;
+
+ for $brackets.comb -> $char
+ {
+ if $char eq '(' { $count++; }
+ elsif $char eq ')' { $count--; }
+ else { die "Illegal character $char"; }
+
+ return False if $count < 0; # Unbalanced inside
+ }
+
+ return $count == 0;
+}
+
+for ^$iterations
+{
+ my $brackets = brackets;
+
+ $color
+ ?? say "$brackets - { is-balanced($brackets) ?? "\x1b[42m" ~ "OK" !! "\x1b[41m" ~ "NOT OK" }" ~ "\x1b[0m"
+ !! say "$brackets - { is-balanced($brackets) ?? "OK" !! "NOT OK" }";
+}
diff --git a/challenge-042/arne-sommer/raku/octal-base b/challenge-042/arne-sommer/raku/octal-base
new file mode 100755
index 0000000000..75b45f9b0f
--- /dev/null
+++ b/challenge-042/arne-sommer/raku/octal-base
@@ -0,0 +1,3 @@
+#! /usr/bin/env raku
+
+say "Decimal $_ = Octal { $_.base(8) }" for ^51;
diff --git a/challenge-042/arne-sommer/raku/octal-fmt b/challenge-042/arne-sommer/raku/octal-fmt
new file mode 100755
index 0000000000..dd33111e62
--- /dev/null
+++ b/challenge-042/arne-sommer/raku/octal-fmt
@@ -0,0 +1,3 @@
+#! /usr/bin/env raku
+
+say "Decimal $_ = Octal { $_.fmt('%o') }" for ^51;