Разбор тестового задания на PYTHON JUNIOR с окладом 80000 рублей

Поделиться
HTML-код
  • Опубликовано: 22 июл 2022
  • В этом видео я хотел бы разобрать реализацию тестового задания на языке python для компании Avito. Простое тестовое задание, в котором хотят проверить, насколько кандидат владеет знаниями по работе с базовыми библиотеками.
    Личный телеграмм канал, где публикую личный опыт и советы начинающим разработчикам:
    t.me/+4CvMjNYRaiMwZDky
    Ссылка на решение с кодом:
    github.com/davdeenko/python-t...
    Ссылка на документацию poetry:
    python-poetry.org

Комментарии • 117

  • @pythondevv
    @pythondevv  Год назад +1

    Телеграмм канал, где я публикую личный опыт и советы начинающим разработчикам:
    t.me/+4CvMjNYRaiMwZDky

  • @nataliepodgainova6582
    @nataliepodgainova6582 Год назад +5

    Спасибо очень информативно. Очень нужно побольше таких видео

  • @danil_tolmachov
    @danil_tolmachov Год назад +4

    Продолжайте выпускать подобные видео. Очень качественно и информативно)

    • @pythondevv
      @pythondevv  Год назад

      Спасибо!
      Завтра новое видео)

    • @YGNETATEL_3000
      @YGNETATEL_3000 Год назад

      @@pythondevv отличный демотивирующий ролик !!

  • @MrAdAmGaMeS
    @MrAdAmGaMeS Год назад +1

    Спасибо тебе, появилось понимание над чем нужно работать

  • @MrHeavy-po2or
    @MrHeavy-po2or Год назад +20

    офигеть,вот это задачки

  • @belov_dev
    @belov_dev Год назад +3

    Хорошая подача. Редко пишу комментарии, но тут поддержу видео, качество на уровне, приятно смотреть

  • @user-jo2ux1tm9y
    @user-jo2ux1tm9y 4 месяца назад +1

    братан это ТОП. это то что нужно.
    спасибо тебе огромное.

  • @mr.wrangler
    @mr.wrangler Год назад +1

    Спасибо , познавательно, интересно

  • @bonjerne4911
    @bonjerne4911 Год назад +4

    Дмитрий, обязательно пили про асинхронщину!
    Большое спасибо за видео:)

  • @fnln1149
    @fnln1149 Год назад +6

    00:00 Intro.
    00:50 Тестовое задание.
    03:33 Давайте начнём.
    05:00 Настроим интерпретатор (Poetry).
    09:29 Едем дальше. Шаблон решения.
    10:35 Тесты
    11:38 Шаблон решения.
    28:17 Напишем код. aiohttp
    30:32 prepare_matrix
    34:55 test prepare_matrix
    37:14 Логирование
    38:20 travers_matrix
    40:15 get_matrix
    42:20 Catching net errors
    47:07 Про тесты
    47:40 docstrings
    49:32 Запуск кода из терминала
    53:20 Проверка кода статическими анализаторами
    54:32 Завершение
    54:50 Обсуждение решения

    • @blastav
      @blastav Год назад

      Если ставить эти тайм коды в описание к видео, а не комментом, то ютуб сделает правильное "разделение" блоков видео. Это помогает визуально оценивать структуру видео и быстро искать нужные блоки.

  • @podgorniy.r
    @podgorniy.r Год назад

    Посмотрел с удовольствием, много полезной информации! Планируете в будущем снять видео о асинхронном программировании? К сожалению мало качественного материала на эту тему.

    • @pythondevv
      @pythondevv  Год назад

      Да, точно будет )

  • @H1DD
    @H1DD Год назад +27

    Отличный формат 👍
    Но есть критика:
    1) зачем запутывать джуниоров pyenv, poetry и копанием в натройках IDE. На этом уровне этого не требуется. У джуниоров и так голова пухнет, а тут еще лишняя информация, у многих от этого руки просто опускаются.
    2) 22:53 продолжать работать как ни в чем не бывало при некорректных входных данных это ооооооочень плохая идея. В такой ситуации правильнее выкинуть исключение а-ля raise 'expected square matrix' , а не возвращать пустой список. В реальной разработке не бывает просто функции, это будет частью громадной системы и если что-то пойдет не так, если какой-то из кирпичиков отработал не так как ожидалось, то лучше сразу остановиться. Даже если идти вашим путем, то исполнение странное. Зачем выкидывать ошибку, тут же её ловить и логировать? Почему бы просто сразу не залогировать тогда, зачем кидать её вообще?
    3) 43:55 Логирование на основе HTTP кодов очень скудное. По таким логам ничего понятно не будет, какой в них тогда толк. Я про скудное "Client error"/"server error"

    • @user-uv2mh7qy5h
      @user-uv2mh7qy5h Год назад

      Там еще похоже 500-ка некорректно обрабатывается. Так как условия 400 500. Т.е. при status = 500 считаем, что все хорошо ...

    • @jirikropocev9911
      @jirikropocev9911 Год назад

      Ага: сам кинул исключение, сам же его поймал строкой ниже, чтоб залогировать сообщение которое сам же и передал в исключение...

    • @YGNETATEL_3000
      @YGNETATEL_3000 Год назад

      Что то мне плохо стало и температура поднялась во время просмотра

  • @twinart795
    @twinart795 Год назад +11

    Видео огонь! Делай больше таких, начинающим подобный контент очень нужен)
    Видео в большей части просмотрел диагонально, потому что многое знаю и нет смысла детально смотреть. Больше смотрю для дополнительного опыта и чужого взгляда на решение задач. Но так же как ребята уже заметили, местами Ты конкретно начинаешь перегружать молодой мозг, тем же poetry(копанием внутренни ide и настройкой самого poetry).
    Также заметил, может возьмешь на вооружение: так как Ты тут в большей части являешься учителем и примером, учи ребят с 0, чтобы, к примеру, сначала проработать алгоритм, расписать его в голове/на листке(в блокноте), а потом писать код, ведь в программирование главное алгоритм продумать, а потом уже нарисовать его кодом.
    Я хоть являюсь middle/middle+ в python, но меня очень удивило, что в тестовом задании на Джуна от него требуют асинхронность О_о и требования по написанию выходных данных в функциях и прочие мелкие моменты.
    Удачи в развитии канала и контента. Подписка)

    • @black_grizzly
      @black_grizzly Год назад

      Как щас говорят, что ищут мидла на зп Джуна)
      Соответственно и вопросы для мидла

  • @futurepc9363
    @futurepc9363 Месяц назад

    Заметил хорошую литературу. Талиба черный лебедь и разумный инвестор. Шикарный выбор.

  • @user-bs6ou6cq4j
    @user-bs6ou6cq4j Год назад +3

    Дмитрий, подскажи, на какое время рассчитаны такие задачи во время реальной работы на компанию? Т. Е. От момента, когда задачу определили, до её полного решения ( включая время на поиски решения)

    • @pythondevv
      @pythondevv  Год назад +1

      Все индивидуально, зависит от задачи, твоего уровня и твоего собственного темпа. В agile (методология разработки) есть понятие story point. Бывают задачи на 1 день, а бывают на 2-3 дня. Обычно, если задача занимает больше 2-3 дней - ее декомпозируют. Так проще следить за прогрессом, особенно у джунов. Такая задача должна занимать 1-2 дня рабочего времени у джуна. Человек с опытом должен решать такое за несколько часов.

  • @VSEMAK
    @VSEMAK Год назад +4

    Отдельное видео по Poetry - да, пожалуйста

    • @pythondevv
      @pythondevv  Год назад +6

      Сделаю!

    • @pythondevv
      @pythondevv  Год назад +1

      Сделал :)
      ruclips.net/video/1bf41pPVxWU/видео.html

  • @kirichenkodv
    @kirichenkodv 10 месяцев назад +2

    Ожидал лайв-кодинга, а тут все уже сам решено и объяснение как делал.

    • @Prodigyqqq
      @Prodigyqqq 14 дней назад

      да не факт, что сам делал, откуда то переписывает, где взял не понятно

  • @user-jl3wg4gl2v
    @user-jl3wg4gl2v Год назад +4

    С двойным разворотом и рекурсией красиво, но как додумались для этого, или где-то увидели такое решение? (Интересно бы прочитать ход мыслей которые к нему приводят). У меня (как и у большинства, думаю) довольно длинная функция с ручными проходом, сменой направления и обновлением границ снизу/справа/сверху/слева

    • @pythondevv
      @pythondevv  Год назад +3

      Привет!
      Давай разберем функцию traverse_matrix по частям:
      1. matrix = list(zip(*matrix[::-1]))
      - эта строчка с использованием функцинаольного подхода.
      - matrix[::-1] разворачивает вненший* список, то есть список строк матрицы, разварачиваем в обратном порядке (с помощью ::-1)
      - с помощью оператора * (звездочка) мы "распаковываем" список чтобы передать его в функцию zip
      - функция zip составляет новые строки матрицы беря каждый элемент из каждого списка превращая в новый список. Получается сначала список сначала из всех нулевых элементов, потом из вторых и так далее. (лучше почитать доку docs.python.org/3.3/library/functions.html#zip)
      - Теперь если вдруматься - то такими действиями мы просто повернули матрицу по часовой стрелке
      2. output.extend(matrix[0][::-1])
      - matrix[0] - берем первую строку, [::-1] - разворачиваем ее
      - Так как мы обходим исходную матрицу против часовой стрелки, нам нужно взять первую строку в обратном порядке в развернутой матрице (развернутой на предыдущем шаге). Если визуализировать, то понятно, что сначала мы поворачиваем матрицу, потом срезаем первую строку, затем переворачиваем эту строку, чтобы получить первую сторону обхода против часовой стрелки исходной матрицы.
      3. traverse_matrix(matrix[1:], output)
      - Вызываем функцию рекурсивно с матрицей без первой строки (потому что мы ее уже добавили в ответ)
      Так же обязательно нужно отметить, что такое решение хорошо работает только на маленьких матрицах. Это так - потому что у него плохая ассимптотика. На каждом шаге рекурсии мы по факту создаем новый объект с новой марицей, выделяем память и тд. Так что ваше решение, если оно не создает матрицу заного может оказаться совсем не хуже в задачах с большими матрицами.

    • @user-jl3wg4gl2v
      @user-jl3wg4gl2v Год назад +1

      @@pythondevv спасибо за ответ! не, как она работает я понял, разобрав на примере (и про асимптотику тоже подумал, что хоть решение в лоб и длинное, но должно быть эффективнее т.к проходит 1 раз и не создает новых вызовов ф-ции -- про создание объектов не подумал кстати), изначально интересно было (и вопрос был) -- как додуматься до такого решения, не помните какие мысли к нему привели, или увидели его на литкоде когда после сдачи открывается список других решений?

    • @pythondevv
      @pythondevv  Год назад +3

      @@user-jl3wg4gl2v на самом деле правда решал эту задачу когда-то давно, в своём первом курсе по python на stepik :) Почему заполнил именно это решение?
      Я хотел написать в пару строчек через слайсы, а с помощью них можно разворачивать и отрезать куски списков. Я легко могу срезать первую строку, но мне нужен левый столбец. Поэтому и надо развернуть матрицу. Как-то так я к этому и пришёл.
      А вообще да, если хочется щёлкать такие задачи, литкод и ему подобные сайты - лучший тренажёр.

  • @huihui6805
    @huihui6805 Год назад +2

    Такое качество записи, но так мало фолловеров... Успехов, парень, отлично снято!

    • @huihui6805
      @huihui6805 Год назад

      Однако на твоём месте я бы немного поработал. Не хватает тихой музыки из библиотек Ютуба + можно было бы гринвол купить, чтобы камера не отнимала на себя много места

    • @pythondevv
      @pythondevv  Год назад

      Спасибо! Музыку обычно вставляю, но в этом видео забыл. А что такое гринвол?

    • @nataliiac.2140
      @nataliiac.2140 Год назад +1

      @@pythondevv гринскрин, который убирает фон, но как по мне итак хорошо. Да и без музыки воспринимается легче, тут на вкус и цвет

    • @travodui
      @travodui Год назад

      Если на ютубе под видосиками такого характера будет отображаться много просмотров, то я задумаюсь о том, что мы живем в симуляции от какой-то нейросетки на питоне. Люди ведь заинтересованы в развлекательном контенте, а не в практическом образовательном.

    • @borzxoYT
      @borzxoYT Год назад

      @@pythondevv зеленая ширма на фоне, благодаря которой видно только тебя

  • @FantomJho
    @FantomJho 4 месяца назад

    Это на Джуниора? Завязываю с обучением

  • @konstantinshiryaev7332
    @konstantinshiryaev7332 2 месяца назад

    Я прохожу обучение на курсах,омни уже скоро к концу подходят по пайтон-разработке,но там даже близко нет того,что вы делаете на данном видео. Никакого асинхронного программирования,никаких тестов,никаких матриц. Где и как можно подготовиться хорошо на уровень джуна. Где эти знания получить в достаточном объеме

  • @aykmadoyan5109
    @aykmadoyan5109 Год назад +1

    Ребят вопрос, я прохожу курсы по Python на Stepik. Всякие ООП, фреймворки, базы данных ещё не проходил. Что мне необходимо изучить, чтобы решать такие задачи?

    • @pythondevv
      @pythondevv  Год назад +1

      На самом деле тут ответ простой - начать решать такие задачи. А все, что не понятно надо гуглить)

  • @timapigolev1640
    @timapigolev1640 Год назад

    Где вы находите вакансии на джуниоров? Мне почему-то попадаются вакансии уровнем не ниже миддла.

    • @pythondevv
      @pythondevv  Год назад

      Добрый день! Да, на джуниор позицию сейчас найти что-то и правда не просто. Надо мониторить рынок. Тут несколько факторов. Хочу записать отдельное видео на эту тему. На senior позиции мне каждую неделю по 2-3 вакансии приходит, при том, что я ничего для этого не делаю.

    • @timapigolev1640
      @timapigolev1640 Год назад

      @@pythondevv подписался чтоб не пропустить

  • @vladkrolik2700
    @vladkrolik2700 Год назад +6

    Круто, можно больше таких видео, и где брать такие задачи ?

    • @VadimRadzih
      @VadimRadzih Год назад +1

      Codewars

    • @pythondevv
      @pythondevv  Год назад +4

      На самом деле любое тестовое задание это мини проект выполняющий узкую задачу, как тут. Я бы рекомендовал во время обучения сразу же пытаться что-то написать по теме уроков. Что-то реально работающее, например бот в телеграмм или маленькое веб приложение. Тут самый важный этап - чтобы потом кто-то опытный проревьюил это решение и указал на недочеты.
      Так же есть мысли откликнуться на джуниор позиции в разных компания и разобрать больше реальных тестовых, такие как в видео.

    • @vladkrolik2700
      @vladkrolik2700 Год назад +1

      @@pythondevv хорошая идея по Джуниор вакансий, было бы круто

  • @stardivari1988
    @stardivari1988 Год назад

    А я то думал print('Hello world!') и погнали😃

  • @finimensniper3322
    @finimensniper3322 Год назад

    А на питоне всегда такие легкие тз для джуна? Просто я как c# unity dev привык видеть вещи на порядок сложнее)

    • @pythondevv
      @pythondevv  Год назад

      Это одно из самых простых. При этом решение тестового задания не гарантирует трудоустройство. Еще нужно пройти собесед. Если удастся такое тз - это почти гарантированный билет на интервью.

    • @finimensniper3322
      @finimensniper3322 Год назад

      ​@@pythondevv О, я то думал что это примерно среднее тз. Понятно что прохождение тз это не гарант трудоустройства, его ведь еще должны заревьюить

    • @finimensniper3322
      @finimensniper3322 Год назад +1

      @Тот самый Андрей Ну учитывая что я щас мидл вполне возможно)

  • @kpriemko
    @kpriemko Год назад +2

    Да, можно по асинхронщине видео, спасибо

  • @MrLotrus
    @MrLotrus Год назад +1

    3:50 Или просто в интерпретаторе импортировать this )

  • @pylounge
    @pylounge Год назад

    Подушка в верхнем левом углу топ)

    • @pythondevv
      @pythondevv  Год назад +1

      Это мерч с внутренней конференции по python в нашей компании. Считай лимитированный товар :) Кстати, у вас классный канал :)

    • @pylounge
      @pylounge Год назад

      @@pythondevv Спасибо)

  • @user-qk3em5oq8d
    @user-qk3em5oq8d Год назад

    Матрица - это прямоугольник из чисел , всё таки)

    • @pythondevv
      @pythondevv  Год назад

      А квадрат, это не прямоугольник? :)

    • @user-qk3em5oq8d
      @user-qk3em5oq8d Год назад

      @@pythondevv Всякий квадрат то это бесспорно - прямоугольник, но не всяк прямоугольник - квадрат. А матрицы бывают не только n x n размерами, но и m х n. Понимаете о чем я?

    • @pythondevv
      @pythondevv  Год назад

      @@user-qk3em5oq8d Да, матрицы бывают m*n, этого вроде бы никто не отрицал

  • @lextuletsky1653
    @lextuletsky1653 Год назад +1

    А мог бы сделать road map по python для новичка?было бы очень полезно,потому что не нашел на ру ютубе

    • @pythondevv
      @pythondevv  Год назад +2

      Привет!
      Это будет как раз одно из следующих видео, я уже пишу сценарий для него!

  • @canal-lm1to
    @canal-lm1to 2 месяца назад

    Когда код пишет явно не джун, чтобы показать типа решение тестового для джуна - это не корректно.
    Да можно много чего узнать, и я сразу начал искать poetry, а потом в коментах нашел - что poetry джуну не нужно. А время и главное структура поэтапного изучения потеряна. Да в свое время я бы к этому пришел. Но еще есть что изучать и без него.
    Когда-то смотрел канал по тестированию, где толковый джун начал записывать свое реальное обучение на рабочих проектах. И видно, как он с каждым новым видео больше изучал. То что у него на работе нужно было, а не для галочки, или это понравится дяде, который будет смотреть ваше тестовое.

  • @banzaika
    @banzaika Год назад +1

    Сяп

  • @ALATIR
    @ALATIR Год назад +1

    python так сделать, что не красиво не напишешь. а напишешь работать не будет. Задание не сложное вроде)))

  • @user-cw3jm5sh7d
    @user-cw3jm5sh7d Год назад

    Народ, кто может подсказать? Где можно найти начинающего программиста для совместного проекта в портфолио?

    • @pythondevv
      @pythondevv  Год назад +1

      Ответил в телеграмм канале)

  • @maths781
    @maths781 Год назад +1

    Итальянец. Спасибо за видео.

    • @pythondevv
      @pythondevv  Год назад

      Итальянец??)

    • @maths781
      @maths781 Год назад

      @@pythondevv в начале руками машете, как итальянцы. Вот и вспомнил про них))

  • @TV-ib3cx
    @TV-ib3cx Год назад

    я задание решил легко, но с тестами поработал плохо. То есть вообще, я тесты не пишу, мне это сложно. Нормально для 16-ти лет?

    • @pythondevv
      @pythondevv  Год назад

      Для 16 лет это потрясающий результат. Тут взрослые люди на работу так устраиваются, решая такие задания.
      Тесты придётся выучить, без них не написать ни один серьёзный проект

    • @TV-ib3cx
      @TV-ib3cx Год назад

      @@pythondevv я рад если всё так и есть

  • @user-ke7ub7hn9l
    @user-ke7ub7hn9l Год назад

    Так-с начинаю смотреть видео, начал учить Пайтон 4 дня назад, посмотрим-с, получу я роботу или нет.

    • @pythondevv
      @pythondevv  Год назад

      успехов!

    • @user-ur3mc6hb5d
      @user-ur3mc6hb5d 11 месяцев назад

      Ну как успехи -то?)

    • @user-ke7ub7hn9l
      @user-ke7ub7hn9l 11 месяцев назад

      @@user-ur3mc6hb5d даже вспомнить не могу, когда это я учил Пайтон😁

  • @DMITRII-ov3dq
    @DMITRII-ov3dq Год назад

    Дима, сколько тебе лет?

    • @pythondevv
      @pythondevv  Год назад

      26)

    • @user-xm5bi7oo8o
      @user-xm5bi7oo8o Год назад

      @@pythondevv Когда начал заниматься? )

    • @pythondevv
      @pythondevv  Год назад

      В универе :)
      Продакшен опыта чуть больше 4х лет сейчас.

  • @vasiliy2396
    @vasiliy2396 26 дней назад

    Какое же тупое условие задачи. Получает матрицу и возвращает list[int], что должно содержаться в этом листе хз.

  • @The_Mavrik
    @The_Mavrik Год назад

    а это точно на джуна?

    • @pythondevv
      @pythondevv  Год назад

      Точно :)
      Стажер / джун

  • @shikama-
    @shikama- Год назад +1

    Не думаю что это для джунов...минимум миддл

  • @Valiko771603
    @Valiko771603 Год назад

    Ошибку на = 500 забыл проверить

    • @pythondevv
      @pythondevv  Год назад

      Только сейчас заметил, что знак равенства там потерял, спасибо :)

  • @trezzh4
    @trezzh4 Год назад +1

    Отличное видео. Очень нужное и познавательное. На 5+. Но английский автору можно немного подучить. Улыбнулся от "This function used to get text" и некоторых других ошибок.

    • @elisey7453
      @elisey7453 Год назад +1

      Можно забить на эти ошибки. В англоязычных компаниях никто не обращает на них внимание и они не мешают общению. Главное чтобы тебя понимал собеседник.

    • @pythondevv
      @pythondevv  Год назад

      Спасибо за фидбек! На самом деле я уже больше 4х лет работаю в международных компаниях. И совсем не испытываю проблем с коммуникацией, чтением документации и даже презентациями продуктов на английском. При этом я изначально хотел использовать его по минимуму в этом видео, чтобы не нагружать зрителя, чуть переволновался (потому что был сосредоточен на задаче) и допустил такие ошибки с написанием и произношением :)
      На самом деле хочу сделать отдельное видео по поводу английского для программиста. Спойлер - без него ничего не получится :)

  • @aweryc
    @aweryc Год назад

    Товарищ 5 секунд менял elif на else....
    Ну норм видео в целом конечно.

    • @pythondevv
      @pythondevv  Год назад +1

      С кем не бывает)

  • @shot2420
    @shot2420 Год назад

    Вроде бы и умеешь такое решать, а всё равно, первую работу найти не можешь....

    • @pythondevv
      @pythondevv  Год назад

      Искать работу и уметь работать разные навыки, к сожалению)

    • @shot2420
      @shot2420 Год назад

      @@pythondevv с этим я соглашусь.)

  • @vova2678
    @vova2678 Год назад

    Много слов говорит

  • @MrMit36rus
    @MrMit36rus Год назад

    Как же это все криво и через жопу в питоне...

    • @pythondevv
      @pythondevv  Год назад +2

      На мой взгляд очень даже красиво. А я много на чем умею код писать :)

  • @user-ne4bd3ry1n
    @user-ne4bd3ry1n Год назад

    портит видос то что вы что то пытаетесь на инглише вставлять, прям невозможно смотреть. если вы про тестовое задание то про него и говорите. нафиг эти английские звуки?

    • @pythondevv
      @pythondevv  Год назад +2

      Привет!
      Да, уже отвечал где-то, что изначально хотел вообще без английских терминов, но иногда просто не знаешь слова на русском + из-за специфики работы уже так привык.
      А по поводу произношения - оно такое себе, сложно было много говорить на камеру и совершенно не следил за произношением и акцентом.
      Следующие видео будет как раз про английский и почему он нужен и почему без него никак.

  • @jirikropocev9911
    @jirikropocev9911 Год назад

    Если обычный, нормальный человек прочитает описание функции traverse_matrix (получает матрицу, возвращает traversed matrix и еще какая-то help variable you don't need to provide) то он и будет использовать её как: result = traverse_matrix(matrix, []) будет очень сильно удивлён результатом, ведь функция всегда возвращает None. Внезапно.
    Решение идти в рекурсию очень красивое и остроумное, но упадёт на матрице 100*100, а это не так и много. Я не "играю в Гугл", коллекция в 10К(и даже миллион) элементов вполне рядовой случай в реальной жизни. Еще на каждом шаге рекурсии у вас создаётся новая коллекция, т.е. на матрице 4*4 у нас дополнительно сделали 8 коллекций, на 100*100 будет 200 (а в 1K*1K - две тысячи?), каждая со своей копией (части) данных и все коллекции "живые", потому что в методах, которые в рекурсии. Что быстрее наступит, стек оверфлоу или аут оф мемори я сходу не скажу, но обычный тупой цикл отработал бы на "ура" даже, наверное, на 1000*1000.

    • @pythondevv
      @pythondevv  Год назад

      Согласен, все верно пишете. Но такое решение я добавил для того, чтобы видео на час не делать. Там еще пара упрощений. И я даже оставлял коммент в видео об этом :)

  • @mr.nom4ik428
    @mr.nom4ik428 Год назад

    Решение в лямбде написанное за 5 минут , где мои 80к
    s = [
    [10, 20, 30, 40],
    [50, 60, 70, 80],
    [90, 100, 110, 120],
    [130, 140, 150, 160]
    ]
    get_matrix = lambda mat: (lambda out: [mm := lambda m, l: [m := list(zip(*m[::-1])), l.extend(m[0][::-1]), mm(m[1:], l), 0][-1] if m else l, mm(mat, out), out][-1] )([])
    print(get_matrix(s))

    • @pythondevv
      @pythondevv  Год назад

      С таким бы решением вы бы не прошли у меня интервью :)

  • @Hamsters_Rage
    @Hamsters_Rage Год назад +1

    traverse_matrix - просто жесть. абсолютно нечитабельный код. при это еще и рекурсивный. интересно сработает он вообще с массивном 1000 на 1000 размером например или больше

    • @pythondevv
      @pythondevv  Год назад

      Я как раз прокомментировал этот момент в видео, пересмотри :)

  • @user-fk5zn3lv3h
    @user-fk5zn3lv3h Год назад

    Я не гуру в математике, но матрицы там бывают не только квадратные, в общем случае прямоугольные [m x n] где m != n.

    • @pythondevv
      @pythondevv  Год назад

      Вроде бы никто с этим не спорит)

    • @user-fk5zn3lv3h
      @user-fk5zn3lv3h Год назад

      ​@@pythondevv
      01:36 - ' кто не изучал математику: матрица это просто квадрат из цифр'.