aboutsummaryrefslogtreecommitdiff
path: root/challenge-042
diff options
context:
space:
mode:
authorWalt Mankowski <waltman@pobox.com>2020-01-06 21:07:23 -0500
committerWalt Mankowski <waltman@pobox.com>2020-01-06 21:07:23 -0500
commitb2608ea1ef5277e747eb556baf7728e1d339cad2 (patch)
tree900ad2c0b7f6048abde1c052c87aaad47a10970e /challenge-042
parenta0f96fd8938aef9e23fb5609e3356562e80757de (diff)
downloadperlweeklychallenge-club-b2608ea1ef5277e747eb556baf7728e1d339cad2.tar.gz
perlweeklychallenge-club-b2608ea1ef5277e747eb556baf7728e1d339cad2.tar.bz2
perlweeklychallenge-club-b2608ea1ef5277e747eb556baf7728e1d339cad2.zip
perl 5 code for week 42 challenge 2
Diffstat (limited to 'challenge-042')
-rw-r--r--challenge-042/walt-mankowski/perl5/ch-2.pl27
1 files changed, 27 insertions, 0 deletions
diff --git a/challenge-042/walt-mankowski/perl5/ch-2.pl b/challenge-042/walt-mankowski/perl5/ch-2.pl
new file mode 100644
index 0000000000..04d4222e3e
--- /dev/null
+++ b/challenge-042/walt-mankowski/perl5/ch-2.pl
@@ -0,0 +1,27 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use feature qw(:5.30);
+use experimental qw(signatures);
+
+my $MAX_LEN = 10;
+
+# return a random string of parens of length $len
+sub rand_str($len) {
+ return join '', map { rand(2) < 1 ? '(' : ')' } 1..$len;
+}
+
+# return true if the parens are balanced, else false
+sub balanced($s) {
+ my $cnt = 0;
+ for my $c (split //, $s) {
+ $cnt += $c eq '(' ? 1 : -1;
+ return 0 if $cnt < 0; # too many right parens
+ }
+ return $cnt == 0;
+}
+
+for (1..100) {
+ my $rs = rand_str(int(rand($MAX_LEN)) + 1);
+ say $rs, balanced($rs) ? " - OK" : " - NOT OK";
+}