def f(h,v):r="+"+"+".join("-"*i for i in h)+"+\n";print r+r.join(("|"+"|".join(" "*i for i in h)+"|\n")*i for i in v)+r
# Examples
print "Test f([0], [0]):"
f([0],[0])
print "Expected:"
print """\
++
++
"""
print "Test f([1, 2], [1, 2]):"
f([1, 2], [1, 2])
print "Expected:"
print """\
+-+--+
| | |
+-+--+
| | |
| | |
+-+--+
"""
print "Test f([1, 0, 3, 0, 2, 0], [2, 1, 0, 0]):"
f([1, 0, 3, 0, 2, 0], [2, 1, 0, 0])
print "Expected:"
print """\
+-++---++--++
| || || ||
| || || ||
+-++---++--++
| || || ||
+-++---++--++
+-++---++--++
+-++---++--++
"""
ZGVmIGYoaCx2KTpyPSIrIisiKyIuam9pbigiLSIqaSBmb3IgaSBpbiBoKSsiK1xuIjtwcmludCByK3Iuam9pbigoInwiKyJ8Ii5qb2luKCIgIippIGZvciBpIGluIGgpKyJ8XG4iKSppIGZvciBpIGluIHYpK3IKCiMgRXhhbXBsZXMKcHJpbnQgIlRlc3QgZihbMF0sIFswXSk6IgpmKFswXSxbMF0pCnByaW50ICJFeHBlY3RlZDoiCnByaW50ICIiIlwKKysKKysKIiIiCnByaW50ICJUZXN0IGYoWzEsIDJdLCBbMSwgMl0pOiIKZihbMSwgMl0sIFsxLCAyXSkKcHJpbnQgIkV4cGVjdGVkOiIKcHJpbnQgIiIiXAorLSstLSsKfCB8ICB8CistKy0tKwp8IHwgIHwKfCB8ICB8CistKy0tKwoiIiIKcHJpbnQgIlRlc3QgZihbMSwgMCwgMywgMCwgMiwgMF0sIFsyLCAxLCAwLCAwXSk6IgpmKFsxLCAwLCAzLCAwLCAyLCAwXSwgWzIsIDEsIDAsIDBdKQpwcmludCAiRXhwZWN0ZWQ6IgpwcmludCAiIiJcCistKystLS0rKy0tKysKfCB8fCAgIHx8ICB8fAp8IHx8ICAgfHwgIHx8CistKystLS0rKy0tKysKfCB8fCAgIHx8ICB8fAorLSsrLS0tKystLSsrCistKystLS0rKy0tKysKKy0rKy0tLSsrLS0rKwoiIiI=
Test f([0], [0]):
++
++
Expected:
++
++
Test f([1, 2], [1, 2]):
+-+--+
| | |
+-+--+
| | |
| | |
+-+--+
Expected:
+-+--+
| | |
+-+--+
| | |
| | |
+-+--+
Test f([1, 0, 3, 0, 2, 0], [2, 1, 0, 0]):
+-++---++--++
| || || ||
| || || ||
+-++---++--++
| || || ||
+-++---++--++
+-++---++--++
+-++---++--++
Expected:
+-++---++--++
| || || ||
| || || ||
+-++---++--++
| || || ||
+-++---++--++
+-++---++--++
+-++---++--++