擅长:python、mysql、java
<p>以下是生成第一和第二模式的另一种方法:</p>
<pre><code>def generate(n, flag = 0):
""" n: number; 0 is 1st pattern; 1 is 2nd pattern """
g = [range(1,n+2)[i*(i+1)/2:i*(i+1)/2 +i+1] for i in range((n+2)/2-1)] if flag else \
[ (i,)*i for i in range(1, n+1)]
return [' '* range(1,len(g)+1)[::-1][i] + ' '.join([str(j) for j in g[i]]) for i in range(len(g))]
for t in generate(6, 0): print t # 1st pattern
for t in generate(6, 1): print t # 2nd pattern
</code></pre>
<p>输出:</p>
^{pr2}$