5 added 354 characters in body

# JavaScript (ES6), 203

Implementing this algorithm (point 3, totally iterative)

Within the limits of script executing in Firefox, I managed to have the 200K console output for input 12 in about 1.5 minutes

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}


Less golfed

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}


Ported to C just for fun, run in 5 secs for input 15 (it compiles and works without #includes)

f(n){int i,j,z,b[49];char c[99];
for(i=n;i--;)b[i]=2*i+1;
for(z=0;!z;){memset(c,40,n+n);c[n+n]=0;
for(i=n;i--;)c[b[i]]=41;puts(c);
for(z=i=n;i--&&z;)if(b[i]<n+i)for(z=0,b[j=i]++;++j<n;)b[j]=(b[j-1]>2*j?b[j-1]:2*j)+1;
}}


Test generating all output but do not display it, just counting output rows

I got 90 sec for input 15

F=n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

console.log=x=>o++ // console.log display no output, just count rows

function test() {
n=+I.value,o=0,t=+new Date
O.textContent='...wait...'
setTimeout(_=>(F(n),O.textContent=['rows='+o,'time sec '+(new Date-t)/1000]), 10)

}

test()
N:<input id=I value=12 type=number max=20><button onclick='test()'>go</button>
<pre id=O></pre>

# JavaScript (ES6), 203

Implementing this algorithm (point 3, totally iterative)

Within the limits of script executing in Firefox, I managed to have the 200K console output for input 12 in about 1.5 minutes

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}


Less golfed

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}


Test generating all output but do not display it, just counting output rows

I got 90 sec for input 15

F=n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

console.log=x=>o++ // console.log display no output, just count rows

function test() {
n=+I.value,o=0,t=+new Date
O.textContent='...wait...'
setTimeout(_=>(F(n),O.textContent=['rows='+o,'time sec '+(new Date-t)/1000]), 10)

}

test()
N:<input id=I value=12 type=number max=20><button onclick='test()'>go</button>
<pre id=O></pre>

# JavaScript (ES6), 203

Implementing this algorithm (point 3, totally iterative)

Within the limits of script executing in Firefox, I managed to have the 200K console output for input 12 in about 1.5 minutes

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}


Less golfed

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}


Ported to C just for fun, run in 5 secs for input 15 (it compiles and works without #includes)

f(n){int i,j,z,b[49];char c[99];
for(i=n;i--;)b[i]=2*i+1;
for(z=0;!z;){memset(c,40,n+n);c[n+n]=0;
for(i=n;i--;)c[b[i]]=41;puts(c);
for(z=i=n;i--&&z;)if(b[i]<n+i)for(z=0,b[j=i]++;++j<n;)b[j]=(b[j-1]>2*j?b[j-1]:2*j)+1;
}}


Test generating all output but do not display it, just counting output rows

I got 90 sec for input 15

F=n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

console.log=x=>o++ // console.log display no output, just count rows

function test() {
n=+I.value,o=0,t=+new Date
O.textContent='...wait...'
setTimeout(_=>(F(n),O.textContent=['rows='+o,'time sec '+(new Date-t)/1000]), 10)

}

test()
N:<input id=I value=12 type=number max=20><button onclick='test()'>go</button>
<pre id=O></pre>

4 added 924 characters in body
n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}


Test generating all output but do not display it, just counting output rows

I got 90 sec for input 15

F=n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

console.log=x=>o++ // console.log display no output, just count rows

function test() {
n=+I.value,o=0,t=+new Date
O.textContent='...wait...'
setTimeout(_=>(F(n),O.textContent=['rows='+o,'time sec '+(new Date-t)/1000]), 10)

}

test()
N:<input id=I value=12 type=number max=20><button onclick='test()'>go</button>
<pre id=O></pre>

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}


Test generating all output but do not display it, just counting output rows

I got 90 sec for input 15

F=n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}

console.log=x=>o++ // console.log display no output, just count rows

function test() {
n=+I.value,o=0,t=+new Date
O.textContent='...wait...'
setTimeout(_=>(F(n),O.textContent=['rows='+o,'time sec '+(new Date-t)/1000]), 10)

}

test()
N:<input id=I value=12 type=number max=20><button onclick='test()'>go</button>
<pre id=O></pre>

3 deleted 4 characters in body

# JavaScript (ES6), 205203

Implementing this algorithm (point 3, totally iterative)

Within the limits of script executing in Firefox, I managed to have the 200K console output for input 12 in about 1.5 minutes

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=1+n;iz=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}


Less golfed

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=1+n;iz=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}


# JavaScript (ES6), 205

Implementing this algorithm (point 3, totally iterative)

Within the limits of script executing in Firefox, I managed to have the 200K console output for input 12 in about 1.5 minutes

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=1+n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}


Less golfed

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=1+n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}


# JavaScript (ES6), 203

Implementing this algorithm (point 3, totally iterative)

Within the limits of script executing in Firefox, I managed to have the 200K console output for input 12 in about 1.5 minutes

n=>{
for(b=[...Array(n)].map((_,i)=>1+2*i),z=0;!z;)
for(c=[...'('.repeat(n+n)],b.map(n=>c[n]=')'),console.log(c.join),z=i=n;i--&&z;)
if(b[i]<n+i)for(z=0,b[j=i]++;++j<n-1;)b[j]=Math.max(b[j-1],2*j)+1
}


Less golfed

n=>{
b=[...Array(n)].map((_,i)=>1+2*i)
q=0
for(z=0;!z;)
{
c=[...'('.repeat(n+n)],
b.map(n=>c[n]=')'),
console.log(++q,c.join)
for(z=i=n;i--&&z;)
if(b[i]<n+i)
for(z=0,b[j=i]++;++j<n-1;)
b[j]=Math.max(b[j-1],2*j)+1
}
}

2 deleted 4 characters in body
1