Задача A. Простой декоратор

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Требуется реализовать на языке Python функции-декораторы.

Функция time_decorator должна принимать декорируюмую функцию и возвращать функцию выводящую время начала выполнения функции, до выполнения декорируемой функции. После выполнения декорируемой функции должно выводиться время окончания выполнения функции и общее время выполнения в миллисекундах.

      
      def time_decorator (decorated_func):
        pass
      
    
Функция counter_decorator должна принимать декорируюмую функцию и возвращать функцию выводящую количество вызовов декорируемой функции. И выполнять декорируюмую функцию.
      
      def counter_decorator(decorated_func):
        pass
      
    
Функция method_decorator должна принимать метод класса с одним аргументом, и возвращать функцию от 3-х аргументов (x, y, z), и вызывать декорируемый метод от аргумента 3 * x - 7 * y + 15 * z + 18.
      
      def method_decorator(decorated_method):
        pass 
      
    

Формат выходных данных

Код решения должен содержать только определение и реализацию функций.

Примеры тестов

Стандартный вход Стандартный выход
1
@time_decorator
def floyd_warshall (n):
  dp = [[0] * n for i in range(n)]
  for i in range(n):
    for j in range(n):
      if (i == j):
        dp[i][j] = 0
      else:
        dp[i][j] = random.randint(1, n)

  for k in range(n):
    for i in range(n):
      for j in range(n):
        dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j])

  sum = 0
  for i in range(n):
    for j in range(n):  
      sum += dp[i][j]

  print(sum)

floyd_warshall(100)
Start time: 1545320524.501671
70943
End time: 1545320524.830567
Execution time: 0.32890844345092773
2
def sum (a, b):
  print(a + b)

fn = counter_decorator(sum)
fn(1, 2)
fn(4, 5)
fn(-4, 5)
Function calls count: 1
3
Function calls count: 2
9
Function calls count: 3
1
3
class do_it:
  def __init__(self):
    pass

  @method_decorator
  def calc(self, x):
    print(x * x)

obj = do_it()
obj.calc(1, 2, 3)
2704

Задача B. n-th element

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Реализовать функцию nth_element(n), которая принимает на вход целое число n и возвращает функцию f. Функция f принимает на вход индексируемую коллекцию и возвращает n-й элемент этой коллекции (нумерация с нуля).

Формат выходных данных

Решение должно содержать только реализацию функции.

Примеры тестов

Стандартный вход Стандартный выход
1
f = nth_element(2)
print(f(['a', 'b', 'c', 'd', 'e']))
 
c

Задача C. groupby group

Входной файл:input.txt   Ограничение времени:1 сек
Выходной файл:output.txt   Ограничение памяти:512 Мб

Условие

Необходимо написать программу, которая группирует студентов по их группам.

Формат входного файла

В первой строке входного файла дано число n — количество студентов. Далее следует n строк, в каждой из которых записаны группа и имя студента.

Группа и имя студента разделены символом табуляции.

Формат выходного файла

Выходной файл должен содержать список студентов, сгруппированный по группам. Для каждой группы необходимо вывести имя группы, а затем все имена студентов, которые принадлежат этой группе в алфавитном порядке, каждое в новой строке.

Сами группы следуют также в алфавитном порядке.

Ограничения

1 ≤ n ≤ 105

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
3
M8103	Sidorov Sidor
M8888	Petrov Petr
M8103	Ivanov Ivan
M8103
Ivanov Ivan
Sidorov Sidor
M8888
Petrov Petr

Задача D. Property

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Требуется реализовать на языке Python класс king_lion со свойством x.

При создании экземпляра класса king_lion x должно быть равно 47. Должна иметься возможность получить значение свойства x, и присвоить значение. При этом свойство x должно всегда оставаться целыми числом в диапазоне от -100 до 100. В случае если x пытаются присвоить значение с типом отличным от int, то такое присвоение следует игнорировать. Если же присваиваемое число лежит вне диапазона -100 до 100, значение свойства x следует установить 0.

    class king_lion():
    def __init__(self):
        pass
      
    def get_x (self):
        pass

    def del_x (self):
        pass

    def set_x(self, value):
        pass
    
  

Формат выходных данных

Код решения должен содержать только определение и реализацию класса king_lion.

Примеры тестов

Стандартный вход Стандартный выход
1
obj = king_lion()
obj.x = asf 
print(obj.x)
obj.x = ffffffff
print(obj.x)
obj.x = 10
print(obj.x)
47
47
10

Задача E. @property

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Требуется реализовать на языке Python класс Student со свойством name с геттером и сеттером.


class Student:

    def __init__(self):
        pass

    @property
    def name(self) -> str:
        pass
            

Сеттер свойства name должен позволять присваивать только строки, состоящие из пробелов и букв английского алфавита (в любом регистре), в остальных случаях требуется бросать исключение ValueError.


0.393s 0.011s 21