diff options
| author | Noud Aldenhoven <noud.aldenhoven@gmail.com> | 2020-01-10 20:49:37 +0100 |
|---|---|---|
| committer | Noud Aldenhoven <noud.aldenhoven@gmail.com> | 2020-01-10 20:49:37 +0100 |
| commit | f8eddf72529bf1a90f4eaa38c884e4a119e2ae3e (patch) | |
| tree | f902c739dceaa1489f23d0eb7d4d95b70a57a71e | |
| parent | 612d4c4f6c947d4aa461b71402a8fc87855bab54 (diff) | |
| download | perlweeklychallenge-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.p6 | 18 | ||||
| -rw-r--r-- | challenge-042/noud/perl6/ch-2.p6 | 49 |
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.'; + } +} |
