Омаров Микаил, 321 группа BoxDrawing 8868
Кибизов Кирилл 321 BoxDrawing 8832
n1box = {('V', 'LIGHT'): '│', ('V', 'HEAVY'): '┃', ('H', 'LIGHT'): '─', ('n1BOX = {('V', 'LIGHT'): '│', ('V', 'HEAVY'): '┃', ('H', 'LIGHT'): '─', ('
>H', 'HEAVY'): '━', ('CORNER', 'TL', 'LIGHT', 'LIGHT'): '┌', ('CORNER', '>H', 'HEAVY'): '━', ('CORNER', 'TL', 'LIGHT', 'LIGHT'): '┌', ('CORNER', '
>TR', 'LIGHT', 'LIGHT'): '┐', ('CORNER', 'BL', 'LIGHT', 'LIGHT'): '└', ('>TR', 'LIGHT', 'LIGHT'): '┐', ('CORNER', 'BL', 'LIGHT', 'LIGHT'): '└', ('
>CORNER', 'BR', 'LIGHT', 'LIGHT'): '┘', ('CORNER', 'TL', 'HEAVY', 'HEAVY'>CORNER', 'BR', 'LIGHT', 'LIGHT'): '┘', ('CORNER', 'TL', 'HEAVY', 'HEAVY'
>): '┏', ('CORNER', 'TR', 'HEAVY', 'HEAVY'): '┓', ('CORNER', 'BL', 'HEAVY>): '┏', ('CORNER', 'TR', 'HEAVY', 'HEAVY'): '┓', ('CORNER', 'BL', 'HEAVY
>', 'HEAVY'): '┗', ('CORNER', 'BR', 'HEAVY', 'HEAVY'): '┛', ('CORNER', 'T>', 'HEAVY'): '┗', ('CORNER', 'BR', 'HEAVY', 'HEAVY'): '┛', ('CORNER', 'T
>L', 'HEAVY', 'LIGHT'): '┎', ('CORNER', 'TR', 'HEAVY', 'LIGHT'): '┒', ('C>L', 'HEAVY', 'LIGHT'): '┎', ('CORNER', 'TR', 'HEAVY', 'LIGHT'): '┒', ('C
>ORNER', 'BL', 'HEAVY', 'LIGHT'): '┖', ('CORNER', 'BR', 'HEAVY', 'LIGHT')>ORNER', 'BL', 'HEAVY', 'LIGHT'): '┖', ('CORNER', 'BR', 'HEAVY', 'LIGHT')
>: '┚', ('CORNER', 'TL', 'LIGHT', 'HEAVY'): '┍', ('CORNER', 'TR', 'LIGHT'>: '┚', ('CORNER', 'TL', 'LIGHT', 'HEAVY'): '┍', ('CORNER', 'TR', 'LIGHT'
>, 'HEAVY'): '┑', ('CORNER', 'BL', 'LIGHT', 'HEAVY'): '┕', ('CORNER', 'BR>, 'HEAVY'): '┑', ('CORNER', 'BL', 'LIGHT', 'HEAVY'): '┕', ('CORNER', 'BR
>', 'LIGHT', 'HEAVY'): '┙', ('T', 'DOWN', 'LIGHT', 'LIGHT'): '┬', ('T', '>', 'LIGHT', 'HEAVY'): '┙', ('T', 'DOWN', 'LIGHT', 'LIGHT'): '┬', ('T', '
>DOWN', 'HEAVY', 'HEAVY'): '┳', ('T', 'DOWN', 'LIGHT', 'HEAVY'): '┯', ('T>DOWN', 'HEAVY', 'HEAVY'): '┳', ('T', 'DOWN', 'LIGHT', 'HEAVY'): '┯', ('T
>', 'DOWN', 'HEAVY', 'LIGHT'): '┰', ('T', 'UP', 'LIGHT', 'LIGHT'): '┴', (>', 'DOWN', 'HEAVY', 'LIGHT'): '┰', ('T', 'UP', 'LIGHT', 'LIGHT'): '┴', (
>'T', 'UP', 'HEAVY', 'HEAVY'): '┻', ('T', 'UP', 'LIGHT', 'HEAVY'): '┷', (>'T', 'UP', 'HEAVY', 'HEAVY'): '┻', ('T', 'UP', 'LIGHT', 'HEAVY'): '┷', (
>'T', 'UP', 'HEAVY', 'LIGHT'): '┸', ('T', 'RIGHT', 'LIGHT', 'LIGHT'): '┤'>'T', 'UP', 'HEAVY', 'LIGHT'): '┸', ('T', 'RIGHT', 'LIGHT', 'LIGHT'): '┤'
>, ('T', 'RIGHT', 'HEAVY', 'HEAVY'): '┫', ('T', 'RIGHT', 'LIGHT', 'HEAVY'>, ('T', 'RIGHT', 'HEAVY', 'HEAVY'): '┫', ('T', 'RIGHT', 'LIGHT', 'HEAVY'
>): '┥', ('T', 'RIGHT', 'HEAVY', 'LIGHT'): '┨', ('T', 'LEFT', 'LIGHT', 'L>): '┥', ('T', 'RIGHT', 'HEAVY', 'LIGHT'): '┨', ('T', 'LEFT', 'LIGHT', 'L
>IGHT'): '├', ('T', 'LEFT', 'HEAVY', 'HEAVY'): '┣', ('T', 'LEFT', 'LIGHT'>IGHT'): '├', ('T', 'LEFT', 'HEAVY', 'HEAVY'): '┣', ('T', 'LEFT', 'LIGHT'
>, 'HEAVY'): '┝', ('T', 'LEFT', 'HEAVY', 'LIGHT'): '┠', ('CROSS', 'LIGHT'>, 'HEAVY'): '┝', ('T', 'LEFT', 'HEAVY', 'LIGHT'): '┠', ('CROSS', 'LIGHT'
>, 'LIGHT'): '┼', ('CROSS', 'HEAVY', 'HEAVY'): '╋', ('CROSS', 'LIGHT', 'H>, 'LIGHT'): '┼', ('CROSS', 'HEAVY', 'HEAVY'): '╋', ('CROSS', 'LIGHT', 'H
>EAVY'): '┿', ('CROSS', 'HEAVY', 'LIGHT'): '╂'}>EAVY'): '┿', ('CROSS', 'HEAVY', 'LIGHT'): '╂'}
2import sys, textwrap2import sys, textwrap
3text = sys.stdin.readline().rstrip('\n')3text = sys.stdin.readline().rstrip('\n')
n4W, v_styleh_style = sys.stdin.readline().split()n4W, Vt, Ht = sys.stdin.readline().split()
5W = int(W) - 25W = int(W) - 2
6lines = textwrap.wrap(text, width=W, break_long_words=False, break_on_hy6lines = textwrap.wrap(text, width=W, break_long_words=False, break_on_hy
>phens=False)>phens=False)
7bounds = [{i for i, ch in enumerate(line) if ch == ' '} for line in line7bounds = [{i for i, ch in enumerate(line) if ch == ' '} for line in line
>s]>s]
88
n9def get_h():n9def H():
10    return box['H', h_style]10    return BOX['H', Ht]
1111
n12def get_v():n12def V():
13    return box['V', v_style]13    return BOX['V', Vt]
14out = []14out = []
n15top_line = box['CORNER', 'TL', v_style, h_style]n15top = BOX['CORNER', 'TL', Vt, Ht]
16for i in range(W):16for i in range(W):
n17    top_line += box['T', 'DOWN', v_styleh_style] if i in bounds[0] elsn17    top += BOX['T', 'DOWN', Vt, Ht] if i in bounds[0] else H()
>get_h() 
18top_line += box['CORNER', 'TR', v_style, h_style]18top += BOX['CORNER', 'TR', Vt, Ht]
19out.append(top_line)19out.append(top)
20for idx, line in enumerate(lines):20for i, line in enumerate(lines):
21    words = [w for w in line.split(' ') if w]21    words = [w for w in line.split(' ') if w]
22    line_len = sum((len(w) for w in words)) + len(words) - 122    line_len = sum((len(w) for w in words)) + len(words) - 1
n23    s = get_v() + words[0]n23    s = V() + words[0]
24    for w in words[1:]:24    for w in words[1:]:
n25        s += get_v() + wn25        s += V() + w
26    s += ' ' * (W - line_len) + get_v()26    s += ' ' * (W - line_len) + V()
27    out.append(s)27    out.append(s)
n28    if idx + 1 < len(lines):n28    if i + 1 < len(lines):
29        currnext = (bounds[idx], bounds[idx + 1])29        ab = (bounds[i], bounds[i + 1])
30        mid = box['T', 'LEFT', v_styleh_style]30        mid = BOX['T', 'LEFT', Vt, Ht]
31        for x in range(W):31        for x in range(W):
n32            if x in curr and x in next:n32            if x in a and x in b:
33                mid += box['CROSS', v_styleh_style]33                mid += BOX['CROSS', Vt, Ht]
34            elif x in curr:34            elif x in a:
35                mid += box['T', 'UP', v_styleh_style]35                mid += BOX['T', 'UP', Vt, Ht]
36            elif x in next:36            elif x in b:
37                mid += box['T', 'DOWN', v_styleh_style]37                mid += BOX['T', 'DOWN', Vt, Ht]
38            else:38            else:
n39                mid += get_h()n39                mid += H()
40        mid += box['T', 'RIGHT', v_styleh_style]40        mid += BOX['T', 'RIGHT', Vt, Ht]
41        out.append(mid)41        out.append(mid)
42last = bounds[-1]42last = bounds[-1]
n43bottom_line = box['CORNER', 'BL', v_style, h_style]n43bot = BOX['CORNER', 'BL', Vt, Ht]
44for i in range(W):44for i in range(W):
t45    bottom_line += box['T', 'UP', v_style, h_style] if i in last else get45    bot += BOX['T', 'UP', Vt, Ht] if i in last else H()
>t_h() 
46bottom_line += box['CORNER', 'BR', v_style, h_style]46bot += BOX['CORNER', 'BR', Vt, Ht]
47out.append(bottom_line)47out.append(bot)
48print('\n'.join(out))48print('\n'.join(out))
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op