Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.