OFFSET
0,4
COMMENTS
Using Knuth's (2011) notation, any string of parentheses can be uniquely written as s_0")"...s_p-1")"s_p"("s_p+1..."("s_q, with 0 <= p <= q, where the substrings s_i are the longest possible properly nested substrings (possibly empty). Examples of properly nested substrings are "()", "()()" and "(())()" (cf. A063171).
Exactly p right parentheses and q-p (cf. A370884) left parentheses are unmatched.
Knuth observes that the above string is part of a chain of length q+1: s_0")"...s_q-1")"s_q, s_0")"...s_q-2")"s_q-1"("s_q, ... , s_0"("s_1..."("s_q, where the q unmatched right parentheses in the first element of the chain are turned, one by one, into unmatched left parentheses in the next elements of the chain. By encoding "(" and ")" with 1 and 0, respectively, such a chain corresponds to a row in the Christmas tree pattern (cf. A367508).
REFERENCES
Donald E. Knuth, The Art of Computer Programming, Vol. 4A: Combinatorial Algorithms, Part 1, Addison-Wesley, 2011, Section 7.2.1.6, p. 459.
LINKS
Paolo Xausa, Table of n, a(n) for n = 0..16382 (rows 0..13 of the triangle, flattened).
EXAMPLE
Triangle begins:
[0] 0;
[1] 1 0;
[2] 2 1 0 0;
[3] 3 2 1 1 1 0 0 0;
[4] 4 3 2 2 2 1 1 1 2 1 0 0 0 0 0 0;
...
The strings corresponding to row 2, in reverse lexicographical order, are:
"))" (2 unmatched right parentheses),
")(" (1 unmatched right parenthesis),
"()" (0 unmatched right parentheses), and
"((" (0 unmatched right parentheses).
The k-th string in row n corresponds to the binary expansion of k-1, padded with zeros on the left as to make it n digits long, with zeros replaced by ")" and ones replaced by "(".
In the following string the position of the unmatched p = 6 right parentheses is denoted by R, the position of the unmatched q-p = 3 left parentheses is denoted by L, and the q+1 = 10 properly nested substrings s_0..s_9 are marked either with E (empty) or * (nonempty).
.
R R R R R R L L L
) ()() ) (()) ) ) ) ) ( (()) ( (()(()())) (
| \__/ \__/ | | | | \__/ \________/ |
E * * E E E E * * E
.
MATHEMATICA
countR[s_] := StringCount[s, "0"] - StringCount[StringJoin[StringCases[s, RegularExpression["1(?R)*+0"]]], "0"];
Array[Map[countR, IntegerString[Range[0, 2^#-1], 2, #]] &, 7, 0]
CROSSREFS
KEYWORD
nonn,tabf
AUTHOR
Paolo Xausa, Mar 06 2024
STATUS
approved