1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# -*- coding: utf-8 -*-

import sys

def m_partitions(n, m, l):
    if m == 1:
        if n <= l:
            yield [n]
    else:
        for i in xrange(min(n - m + 1, l), 0, - 1):
            for p in m_partitions(n - i, m - 1, min(i, l)):
                yield [i] + p

def partitions(n):
    for i in xrange(1, 1 + n):
        for p in m_partitions(n, i, n - i + 1):
            yield p

def young(n):
    for pattern in partitions(n):
        for m in pattern:
            print 'â–¡' * m
        print

def main(args):
    if len(args) == 1:
        n = int(args[0])
    else:
        n = 5

    young(n)

if __name__ == '__main__':
    main(sys.argv[1:])