Прикреплённый файл «spiral2.py»
Загрузка 1 import collections
2
3 class Spiral:
4
5 def __init__(self, text=''):
6 self.elems = collections.Counter(text)
7
8 def __iter__(self):
9 return self.elems.elements()
10
11 def __add__(self, other):
12 return type(self)(self.elems + other.elems)
13
14 def __sub__(self, other):
15 return type(self)(self.elems - other.elems)
16
17 def __mul__(self, cnt):
18 return type(self)(list(self) * cnt)
19 __rmul__ = __mul__
20
21 def __len__(self):
22 return sum(self.elems.values())
23
24 def _show(self):
25 (diffx, diffy) = ((0, 1, 0, -1), (1, 0, -1, 0))
26 funct = {}
27 X = Y = n = k = j = mx = MaxX = MinY = MaxY = 0
28 for (idx, el) in enumerate(self):
29 funct[X, Y] = el
30 (mx, MinY, MaxX, MaxY) = (min(mx, X), min(MinY, Y), max(MaxX, X), max(MaxY, Y))
31 if idx >= n:
32 k += 1
33 n += k
34 j = (j + 1) % 4
35 (X, Y) = (X + diffx[j], Y + diffy[j])
36 return (funct, (mx, MaxX), (MinY, MaxY))
37
38 def __str__(self):
39 (funct, (mx, MaxX), (MinY, MaxY)) = self._show()
40 return '\n'.join((''.join((funct.get((X, Y), ' ') for X in range(mx, MaxX + 1))) for Y in range(MinY, MaxY + 1)))
41
42 def master():
43 (First, Second) = (Spiral('QWERTY' * 2), Spiral('asdf' * 3))
44 print(First + Second)
45 if __name__ == '__main__':
46 master()
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2022-03-12 21:02:11, 1.5 KB) [[attachment:spiral.py]]
- [получить | показать] (2022-03-12 21:02:23, 1.3 KB) [[attachment:spiral2.py]]
Вам нельзя прикреплять файлы к этой странице.