aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoud Aldenhoven <noud.aldenhoven@gmail.com>2020-01-10 20:49:37 +0100
committerNoud Aldenhoven <noud.aldenhoven@gmail.com>2020-01-10 20:49:37 +0100
commitf8eddf72529bf1a90f4eaa38c884e4a119e2ae3e (patch)
treef902c739dceaa1489f23d0eb7d4d95b70a57a71e
parent612d4c4f6c947d4aa461b71402a8fc87855bab54 (diff)
downloadperlweeklychallenge-club-f8eddf72529bf1a90f4eaa38c884e4a119e2ae3e.tar.gz
perlweeklychallenge-club-f8eddf72529bf1a90f4eaa38c884e4a119e2ae3e.tar.bz2
perlweeklychallenge-club-f8eddf72529bf1a90f4eaa38c884e4a119e2ae3e.zip
Solutions for challenge 42 task 1 and 2 in Raku by Noud
-rw-r--r--challenge-042/noud/perl6/ch-1.p618
-rw-r--r--challenge-042/noud/perl6/ch-2.p649
2 files changed, 67 insertions, 0 deletions
diff --git a/challenge-042/noud/perl6/ch-1.p6 b/challenge-042/noud/perl6/ch-1.p6
new file mode 100644
index 0000000000..21c3deec02
--- /dev/null
+++ b/challenge-042/noud/perl6/ch-1.p6
@@ -0,0 +1,18 @@
+# Octal Number System
+#
+# Write a script to print decimal number 0 to 50 in Octal Number System.
+#
+# For example:
+# Decimal 0 = Octal 0
+# Decimal 1 = Octal 1
+# Decimal 2 = Octal 2
+# Decimal 3 = Octal 3
+# Decimal 4 = Octal 4
+# Decimal 5 = Octal 5
+# Decimal 6 = Octal 6
+# Decimal 7 = Octal 7
+# Decimal 8 = Octal 10
+#
+# and so on.
+
+say $_.fmt("Decimal $_ = Octal %o") for ^51;
diff --git a/challenge-042/noud/perl6/ch-2.p6 b/challenge-042/noud/perl6/ch-2.p6
new file mode 100644
index 0000000000..9ca88a51af
--- /dev/null
+++ b/challenge-042/noud/perl6/ch-2.p6
@@ -0,0 +1,49 @@
+# Balanced Brackets
+#
+# Write a script to generate a string with random number of ( and ) brackets.
+# Then make the script validate the string if it has balanced brackets.
+#
+# For example:
+# () - OK
+# (()) - OK
+# )( - NOT OK
+# ())() - NOT OK
+
+sub rand_brackets($size) {
+ return [~] (<( )>.pick() for ^$size);
+}
+
+sub balanced($brackets) {
+ # Count the open ( and close ) brackets sequentially. ( is given +1, ) is
+ # given -1. If the count ever goes below zero there are more close
+ # brackets than open brackets, hence an unbalanced string. If at the end
+ # the count is more than zero there are more open brackets than close
+ # brackets, hence an unbalanced string.
+ my $c = 0;
+
+ for $brackets.comb() -> $b {
+ if ($b === '(') {
+ $c++;
+ } else {
+ $c--;
+ }
+ if ($c < 0) {
+ return False;
+ }
+ }
+
+ return $c == 0;
+}
+
+
+my $brackets = '';
+for 1..10 -> $i {
+ # Only generate bracket strings of length 4, because with higher lengths
+ # the randomly generated strings rarely are balanced.
+ $brackets = rand_brackets(4);
+ if (balanced($brackets)) {
+ say $brackets ~ ' is balanced.';
+ } else {
+ say $brackets ~ ' is not balanced.';
+ }
+}