Активность Олега в теме активного обмена опытом между разработчиками: t.me/it_horizon_club/6 Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады. t.me/KZbinPronin
@milov52 Жыл бұрын
Отличный собес - один из лучших за последнее время
@AndyPronin Жыл бұрын
Лайк, шер, колокольчик. Рад, что нравится
@gricen1 Жыл бұрын
Огромное спасибо Олегу за собес. Отдельная благодарность Андрею за канал и возможность потренироваться на "кошках") По факту собес получился провальным. Особенно обидно с затупом на массивах и хэш-таблицах, учитывая, что я это знаю. Но самое главное свое назначение мок-собеседование выполнило. Подсветило те моменты, на которые нужно обратить больше внимания и проработать их. Тем, кто еще по какой-то причине не воспользовался этой возможность, крайне рекомендую. До встречи на алгоритмическом собесе ;-)
@gricen1 Жыл бұрын
58:50
@oleg_korolev Жыл бұрын
Учился вместе с Сергеем, был один из самых сильных студентов в когорте. Понимаю, что не понимаю целей, которые ставятся перед подобными интервью, но кажется, что интервью прошло в пустую. По сути, это скрининг, было очень мало вопросов, про Джангу, питон и фреймворки. Думаю, что задачу для скрининга нужно формулировать проще, чтобы не пришлось потом 20 минут объяснять условия.
@yavener Жыл бұрын
Немного может запутать условие прибавить +1 к предыдущему ИЛИ следующему элементу, но в решении будет достаточно рассмотреть только один из кейсов в зависимости от направления движения по массиву: если идем слева направо то прибавляем +1 к следующему элементу, а если же решаем двигаться по массиву от конца к началу, то +1 к левому элементу.
@ЗНАКОМЫЙСВАРЩИК Жыл бұрын
Олег классный чел.! Рад за него и немного завидую ему, если честно. Самая моя большая ошибка в жизни , что не пошёл учиться раньше. А теперь мне 39 и очень тяжело учиться.
@nitebo1 Жыл бұрын
Никогда не поздно. Да тем более если нравится программировать, то можно это делать «для души»)
@ЗНАКОМЫЙСВАРЩИК Жыл бұрын
@@nitebo1 учусь, но пошли вложенные списки и матрица и я забуксовал(
@slizverg23 Жыл бұрын
@@ЗНАКОМЫЙСВАРЩИКРазберёшься, не парься. Главное не бросать и со временем понимание придёт. Спустя два года обучения сейчас оч смешно вспоминать, какие темы мне поначалу казались «сложными»:)
@ЗНАКОМЫЙСВАРЩИК Жыл бұрын
@@slizverg23 спасибо
@vanadoo5836 Жыл бұрын
Повезло что мне не 39, а всего 38 😅
@seoonlyRU Жыл бұрын
лайк от СЕООНЛИ новичку по классике
@Phantom-ul2hl Жыл бұрын
Привет! А где сам Андрей с чтением Лутца. Я уже второй том читаю 28 главу ООП) на канале последняя была 20ая 2 месяца назад. Жду с нетерпением рубрики по разбору книги Марка Лутца с примерами кода, как было раньше😊
@buddhagameplay5356 Жыл бұрын
Проверяем длину списка, если >= 2 то далее, если меньше - "не подходит". Далее перебираем список и проверяем на чётность "число" и "число справа" либо "число" и "число слева", выбрать нужно только одно и делать так до конца списка. Считать операции +1. Доходим до конца - делаем проверку последних двух чисел. Если они разные (с точки зрения чётности) - "не подходит", если нет +1 и выдаём результат
@vladislavmazur5419 Жыл бұрын
Не понимаю почему список из 2 не проходит, даже список из одного, если значение четное, то результат 0
@sn3232 Жыл бұрын
Ещё есть шорткат, который позволит определить возможно ли преобразование вообще. При выполнении "операции" чётность суммы не изменяется, т.к. к ней прибавляется 2 единицы. После преобразований сумма должна быть чётная (т.к. все элементы чётные), т.о. можно по чётности суммы определить возможность преобразования. С одной стороны это добавляет ещё один проход по массиву, но можно надеятся на оптимизацию встроенной sum, короче говоря, надо проверять насколько это на самом деле шорткат)
@ВиталийГусельников-м5к Жыл бұрын
Если сумма всех чисел списка чётная, то идём дальше, а если нечетная, то уже не можем - как первое условие проверки.
@boloyeung3568 Жыл бұрын
Это надо по всем числам вначале пробежаться... смысл?
@dd0275 Жыл бұрын
def func(a: int) -> list | bool: countO: int = 0 if len(list(filter(lambda n: n%2 == 1, nums))) % 2 != 0: return False for i in range(len(nums)-1): if nums[i]%2 == 0: continue nums[i] += 1 nums[i+1] += 1 countO += 1 print(countO) return nums Нам достаточно понять сколько нечетных чисел в массиве, потму что по факту ты просто перемещаешь нечетное число в конец массива(и если в конце массива будет четное количество нечетных чисел, это говорит о том что задачу можно решить).
@sn3232 Жыл бұрын
Здесь ещё менее жёсткое условие! Чтобы понять можно ли провести преобразование достаточно понять чётное ли число нечётных чисел в массиве, т.к. чётность суммы инвариантна при выполнении "операции". Т.о. первую проверку можно упростить до sum(nums) % 2 != 0. Вместо list | bool я бы вернул Tuple[ bool, Optional[int], Optional[ List[int] ] ] где первый bool говорит возможно ли преобразование ну или сразу collections.namedtuple(transform_possible: bool, ops_counter: int, even_list: Optional[List[int]]) Использовать print для вывода, думаю сами понимаете не стоит.
@EduardMalinochka Жыл бұрын
А можно ссылку на литкод на эту задачку? Хочется ее прорешать со всеми готовыми тестами:)
@mak3211 ай бұрын
Абсолютли
@Villhard Жыл бұрын
Может я что-то не понимаю, но это вроде просто решается. def func(nums: list[int]): if len(nums) < 2 or sum(1 for num in nums if num % 2 != 0) % 2 != 0: return False counter = 0 for i in range(len(nums)): if nums[i] % 2 != 0: nums[i] += 1 nums[i + 1] += 1 counter += 1 return counter
@sn3232 Жыл бұрын
Здесь, вероятно, будет быстрее проверять чётность всей суммы, не проверяя отдельно чётность каждого слагаемого. Вместо: sum(1 for num in nums if num % 2 != 0) % 2 != 0 просто: sum(nums) % 2 != 0 Этот алгоритм кстати и итоговый массив вычисляет, что в задаче не требуется (или просто портит входной массив если нельзя привести к нужному виду), + изменение входных данных происходит, что, вообще говоря, нужно будет для пользователя проговорить отдельно (лучше капсом))).
@iwan-programmer Жыл бұрын
def func(nums): flag = False counter = 0 for i in nums: if flag: counter += 1 if i % 2: flag = not flag return None if flag else counter
@ИгорьДавыдовский-ф9ь Жыл бұрын
Интервьюер так поставил задачу, что вообще не понятно было чего он хочет. Нет чтоб сказать прямо, что если число не четное добавляем оденицу следующему, а вывести надо количество операций с изменением числа.
@gricen1 Жыл бұрын
@@ИгорьДавыдовский-ф9ь Часть задачи как раз и состоит в том, чтобы выудить из формулировки суть. С этим не очень хорошо справился. В какой-то момент были опасения, что не уложусь по времени.
@yavener Жыл бұрын
не будет правильно считать, т.к. не учитывает, что если к текущему элементу прибавили +1, то и к следующему нужно добавить +1 (при движении по массиву слева направо).
@iwan-programmer Жыл бұрын
@@yavener Считает правильно. Запусти и убедись. )
@yavener Жыл бұрын
@@iwan-programmer ссори, да, работает) но код на первый взгляд весьма не очевидный. Ассоциирую с монеткой, которая в начальном положении на орле и при первом нечетном числе переворачивается в решку. Пока она в этом положении (решка) при каждой итерации растет counter. В конце смотрим, если решка - выдаем None , иначе counter.
@КонстантинАлексеев-ы9б Жыл бұрын
Counter =0 For i in range (len(list)-1): If list[i]%2==0: list[i]+=1 list[i+1]+=1 Counter +=1 #ну еще условие про длину списка =2 и если второй элемент нечётный , неудобно с телефона писать (
@marat_shaydulin Жыл бұрын
def make_even(nums): ops = 0 for i in range(len(nums) - 1): if nums[i] % 2 == 1: nums[i + 1] += 1 ops += 1 return ops if len(nums) > 1 and nums[-1] % 2 == 0 else "impossible"
@sn3232 Жыл бұрын
т.е. портите входной массив и идея "операции" никак не отражена в функции?
@marat_shaydulin Жыл бұрын
@@sn3232 да
@Konstantin_Stalnov Жыл бұрын
Олег очень тактично общается!!! 👏👏👏
@gricen1 Жыл бұрын
Да, другой бы размотал, как бог черепаху)
@maximkuchiga141 Жыл бұрын
может кто-нибудь объяснить почему на входе у функции int?
@sn3232 Жыл бұрын
misspell
@beardedman721 Жыл бұрын
Ну ептыть, опять я все пропустил 😬
@7IdE Жыл бұрын
Рили было крайне странно услышать "ничего не знаю про хэш-мапы" после такого бекграунда, но задачу в целом решил, код писал неплохо. Ну а фидбек от Олега - как обычно на высоте.
@gricen1 Жыл бұрын
Сам в шоке)
@ЕвгенийЮрченко-с1ф Жыл бұрын
Хуже задачи, только ее формулировка(
@mak3211 ай бұрын
Ну после примера вроде бы понятно стало, а без примера вообще не ясно
@igorpetrov7464 Жыл бұрын
Капец интервьювер , не понимает, что спрашивает. Умышленно или по тупости неправильно помогает
@LifterAndy11 ай бұрын
Ой, а позовите меня на собеседование))) Я самоучка, ни на какие курсы не ходил. Меня ни кто на работу не брал. Занимаюсь фул-стек разработкой. Пишу скам проэкты, интернет-казино, порносайты, ботов и т.д.)))
@ПавелАплеснин-о3щ10 ай бұрын
def convert_to_even(nums: list[int]) -> int | str: try: if (l := len(nums)) < 2: raise IndexError count = 0 for i in range(l): if nums[i] % 2: count += 1 nums[i] += 1 nums[i + 1] += 1 return count except IndexError: return 'не могу'