JavaScript(ES6)231 244
編集バグ修正、いくつかの並べ替え、およびheight == 1を管理する別の方法
さらに、これがOPで許可されているため、入力用のprompt()がない関数に変更されました。
このチャレンジにはおそらく最適ではない一般的なアルゴリズムへの変更はありません
F=h=>{for(p=s=[i=z=b=t=''];++p<h;)i=1,z=b=' ',s[p]=t;for(p=--h,k=64;++k<91;)s[p]+=t+String.fromCharCode(k),k-74||(s=s.map((x,q)=>x+(p-q?' ':'avascript'))),p-=i,p<0|p>h?(i=-i,p-=i+i,t=z,b=t+t):t+=b;console.log(s.join('\n'))}
説明した
F=h=>{
// row in s for output must be initialized to ''. In the same step I make other initializations
for(p=s=[i=z=b=t='']; ++p < h;) // initialize for height 1, all increment and spacing can be null
i=1,z=b=' ',s[p]=t; // the for body is entered only if height > 1, initializing spacing and increment to the right values
for(p=--h,k=64;++k<91;)
s[p]+=t+String.fromCharCode(k),
k-74||(s=s.map((x,q)=>x+(p-q?' ':'avascript'))), // if 'J' modify each line of output adding the name or spacing
p-=i,p<0|p>h?(i=-i,p-=i+i,t=z,b=t+t):t+=b; // index bouncing
console.log(s.join('\n'))
}
例
1
ABCDEFGHIJavascriptKLMNOPQRSTUVWXYZ
3上がる
C G K O S W
B D F H Javascript L N P R T V X Z
A E I M Q U Y
上に4
D Javascript P V
C E I K O Q U W
B F H L N R T X Z
A G M S Y
7下がる
G S
F H R T
E I Q U
D Javascript P V
C K O W
B L N X Z
A M Y