Skip to content

Commit b9095f2

Browse files
author
Salve J. Nilsen
committed
Fix POD, fix bug in 3rd example
1 parent 86ca520 commit b9095f2

File tree

1 file changed

+45
-32
lines changed

1 file changed

+45
-32
lines changed

best-of-rosettacode/balanced-brackets.pl

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
use v6;
2+
13
=begin pod
24
3-
=head1 Problem
5+
=head1 Balanced brackets
46
57
Generate a string with N opening brackets (“[”) and N closing brackets (“]”), in some arbitrary order.
68
Determine whether the generated string is balanced; that is, whether it consists entirely of pairs of opening/closing brackets (in that order), none of which mis-nest.
@@ -10,17 +12,19 @@ =head1 More
1012
L<http://rosettacode.org/wiki/Balanced_brackets#Perl_6>
1113
1214
=head1 What's interesting here?
13-
* idiomatic solutions
14-
* hyper operators
15-
* switch statement
16-
* roll
17-
* grammar
15+
16+
=item idiomatic solutions
17+
=item hyper operators
18+
=item switch statement
19+
=item roll
20+
=item grammar
1821
1922
=head2 Depth counter
2023
2124
=end pod
2225

23-
sub balanced($s) {
26+
{
27+
sub balanced($s) {
2428
my $l = 0;
2529
for $s.comb {
2630
when "]" {
@@ -32,65 +36,74 @@ ($s)
3236
}
3337
}
3438
return $l == 0;
35-
}
39+
}
3640

37-
my $n = prompt "Number of brackets";
38-
my $s = (<[ ]> xx $n).pick(*).join;
39-
say "$s {balanced($s) ?? "is" !! "is not"} well-balanced"
41+
my $n = prompt "Number of brackets >";
42+
my $s = (<[ ]> xx $n).pick(*).join;
43+
say "$s {balanced($s) ?? "is" !! "is not"} well-balanced";
44+
}
4045

4146
=begin pod
4247
4348
=head2 FP oriented
4449
4550
=end pod
4651

47-
sub balanced($s) {
52+
{
53+
sub balanced($s) {
4854
.none < 0 and .[*-1] == 0
49-
given [\+] '\\' «leg« $s.comb;
50-
}
55+
given [\+] '\\' «leg« $s.comb;
56+
}
5157

52-
my $n = prompt "Number of bracket pairs: ";
53-
my $s = <[ ]>.roll($n*2).join;
54-
say "$s { balanced($s) ?? "is" !! "is not" } well-balanced"
58+
my $n = prompt "Number of bracket pairs: ";
59+
my $s = <[ ]>.roll($n*2).join;
60+
say "$s { balanced($s) ?? "is" !! "is not" } well-balanced";
61+
}
5562

5663
=begin pod
5764
5865
=head2 String munging
5966
6067
=end pod
6168

62-
sub balanced($_ is copy) {
63-
() while s:g/'[]'//;
69+
{
70+
sub balanced($_ is copy) {
71+
s:g/'[]'// while m/'[]'/;
6472
$_ eq '';
65-
}
73+
}
6674

67-
my $n = prompt "Number of bracket pairs: ";
68-
my $s = <[ ]>.roll($n*2).join;
69-
say "$s is", ' not' xx not balanced($s)), " well-balanced";
75+
my $n = prompt "Number of bracket pairs: ";
76+
my $s = <[ ]>.roll($n*2).join;
77+
say "$s is", ' not' xx not balanced($s), " well-balanced";
78+
}
7079

7180
=begin pod
7281
7382
=head2 Prasing with a grammar
7483
7584
=end pod
7685

77-
grammar BalBrack {
86+
{
87+
88+
grammar BalBrack {
7889
token TOP { ^ <balanced>* $ };
7990
token balanced { '[]' | '[' ~ ']' <balanced> }
91+
}
92+
93+
my $n = prompt "Number of bracket pairs: ";
94+
my $s = <[ ]>.roll($n*2).join;
95+
say "$s { BalBrack.parse($s) ?? "is" !! "is not" } well-balanced";
96+
8097
}
81-
82-
my $n = prompt "Number of bracket pairs: ";
83-
my $s = <[ ]>.roll($n*2).join;
84-
say "$s { BalBrack.parse($s) ?? "is" !! "is not" } well-balanced";
8598

8699
=begin pod
87100
88101
=head1 Features used
89102
90-
C<roll> - L<http://perlcabal.org/syn/S32/Containers.html#roll>
91-
C<given> - L<http://perlcabal.org/syn/S04.html#Switch_statements>
92-
C<prompt> - L<http://perlcabal.org/syn/S32/IO.html#prompt>
93-
C<grammar> - L<http://perlcabal.org/syn/S05.html#Grammars>
103+
=item C<roll> - L<http://perlcabal.org/syn/S32/Containers.html#roll>
104+
=item C<given> - L<http://perlcabal.org/syn/S04.html#Switch_statements>
105+
=item C<prompt> - L<http://perlcabal.org/syn/S32/IO.html#prompt>
106+
=item C<grammar> - L<http://perlcabal.org/syn/S05.html#Grammars>
94107
95108
=end pod
96109

0 commit comments

Comments
 (0)