Прикреплённый файл «spiral.py»
Загрузка 1 #!/usr/bin/env python3
2 '''
3 '''
4
5 from collections import Counter
6
7 class Spiral:
8
9 def __init__(self, string = ""):
10 self.cells = Counter(string)
11
12 def __iter__(self):
13 return self.cells.elements()
14
15 def __add__(self, other):
16 return type(self)(self.cells + other.cells)
17
18 def __sub__(self, other):
19 return type(self)(self.cells - other.cells)
20
21 def __mul__(self, num):
22 return type(self)(list(self)*num)
23
24 __rmul__ = __mul__
25
26 def __len__(self):
27 return sum(self.cells.values())
28
29 def _square(self):
30 dx, dy = (0, 1, 0, -1), (1, 0, -1, 0)
31 F = {}
32 x = y = n = k = j = mx = Mx = my = My = 0
33 for i, c in enumerate(self):
34 F[x,y] = c
35 mx, my, Mx, My = min(mx, x), min(my, y), max(Mx, x), max(My, y)
36 if i>= n:
37 k += 1
38 n += k
39 j = (j+1)%4
40 x, y = x+dx[j], y+dy[j]
41 return F, (mx, Mx), (my, My)
42
43 def __str__(self):
44 F, (mx, Mx), (my, My) = self._square()
45 return "\n".join("".join(F.get((x,y), " ") for x in range(mx, Mx+1)) for y in range(my, My+1))
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.Вам нельзя прикреплять файлы к этой странице.
