👨🏻‍💻Нео, просыпайся, пора поработать с Матрицей!🔢

Сегодня пример тестового на разработчика-джуна от Avito Tech. Нужно реализовать библиотеку, которая будет осуществлять получение квадратной матрицы (NxN) с удалённого сервера и возвращать её пользователю в виде List[int]. Этот список должен содержать результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла.

Пример исходной матрицы: +-----+-----+-----+-----+ | 10 | 20 | 30 | 40 | +-----+-----+-----+-----+ | 50 | 60 | 70 | 80 | +-----+-----+-----+-----+ | 90 | 100 | 110 | 120 | +-----+-----+-----+-----+ | 130 | 140 | 150 | 160 | +-----+-----+-----+-----+

Матрица гарантированно содержит целые неотрицательные числа. Форматирование границ иными символами не предполагается.

✍️Требования к выполнению и оформлению ▫️Библиотека содержит функцию со следующим интерфейсом:

async def get_matrix(url: str) -> List[int]: ...

▫️Функция единственным аргументом получает URL для загрузки матрицы с сервера по протоколу HTTP(S). ▫️Функция возвращает список, содержащий результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла. ▫️Взаимодействие с сервером должно быть реализовано асинхронно – посредством aiohttp, httpx или другого компонента на asyncio. ▫️Библиотека должна корректно обрабатывать ошибки сервера и сетевые ошибки (5xx, Connection Timeout, Connection Refused и пр.). ▫️В дальнейшем размерность матрицы может быть изменена с сохранением форматирования. Библиотека должна сохранить свою работоспособность на квадратных матрицах другой размерности. ▫️Решение задачи необходимо разместить на одном из публичных git-хостингов (GitHub, GitLab, Bitbucket).

✅Проверка решения Для самостоятельной проверки можно использовать следующий test case:

SOURCE_URL = 'https://raw.githubusercontent.com/avito-tech/python-trainee-assignment/main/matrix.txt' TRAVERSAL = [ 10, 50, 90, 130, 140, 150, 160, 120, 80, 40, 30, 20, 60, 100, 110, 70, ]

def test_get_matrix(): assert asyncio.run(get_matrix(SOURCE_URL)) == TRAVERSAL

Также оцениваются тесты, type hints, структура решения и общее качество кода.

🐇🕳

#тестовое |⚡️ Забустить канал 🚀
repost

21

input message

напишите коммент

еще контент автора

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь